php curl 检查百度是否收录文章的例子

 更新时间:2016年11月25日 15:41  点击:1410
发的文章如果我每一篇都是手工查的话是非常的累的,这里可以利用一个简单的php函数来帮我们实现自动检测,下面我们就利用php curl来做一个模仿用户去访问百度的wgbb例子,希望此例子对各位会有所帮助哦。

前几天到贴吧晒度娘收录的时候

我晒了一幅图

php curl 检查百度是否收录文章的例子

有吧友问我:

文章上面的"百度已收录(仅管理员可见)"是怎么实现的

只要在主题的function.php里添加以下代码就可以实现啦~


例子。

 代码如下 复制代码

function d4v($url){
 $url='http://www.baidu.com/s?wd='.$url;
 $curl=curl_init();
 curl_setopt($curl,CURLOPT_URL,$url);
 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
 $rs=curl_exec($curl);
 curl_close($curl);
 if(!strpos($rs,'没有找到')){
  return 1;
 }else{
  return 0;
 }
}
add_filter( 'the_content',  'baidu_submit' );
function baidu_submit( $content ) {
 if( is_single() && current_user_can( 'manage_options') )
  if(d4v(get_permalink()) == 1)
   $content="<p align=right>百度已收录(仅管理员可见)</p>".$content;
  else
   $content="<p align=right><b><a style=color:red target=_blank href=http://zhanzhang.baidu.com/sitesubmit/index?sitename=".get_permalink().">百度未收录!点击此处提交</a></b>(仅管理员可见)</p>".$content; 
  return $content;
 }

在php中获取图片大小我们可以使用getimagesize函数,这个函数是用于获取图像的尺寸的函数,下面我们一起来看例子。

利用getimagesize函数就可以获取

 代码如下 复制代码

/*

    
php 获取图片尺寸的方法

*/

$url='/images/201203/08/1331189004_28093400.jpg';
 
$imageInfo=getimagesize($url);
print_r($imageInfo);
/*

 
Array

(

    
[0] => 139

    
[1] => 162

    
[2] => 2

    
[3] => width="139" height="162"

    
[bits] => 8

    
[channels] => 3

    
[mime] => image/jpeg

)

 
*/

利用我们获取的宽度与高度我们对图片进行设置

 代码如下 复制代码

<?php/* 1.jpg为你想获得其尺寸的图片 */
$arr = getimagesize("1.jpg");
/**
 * 这里$arr为一个数组类型
 * $arr[0] 为图像的宽度
 * $arr[1] 为图像的高度
 * $arr[2] 为图像的格式,包括jpg、gif和png等
 * $arr[3] 为图像的宽度和高度,内容为 width="xxx" height="yyy"
 */
/* 以下两行代码输出的内容都是一样的 */
echo "<img src="1.jpg" $arr[3] alt="" />";
echo "<img src="1.jpg" width="$arr[0]" height="$arr[1]" alt="" />";
?>

在php中$GLOBALS是超全局变量而global也是一个全局变量,那么它们在应用中有什么区别呢,下面我就整理了一些相关的例子各各位同学一起分享吧。

php中有一个不为很多人所用的超全局变量$GLOBALS。合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别。

$GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的,自己可以通过打印$GLOBALS这个变量的结果就知道了。

global与$GLOBALS['']区别

$GLOBALS

$GLOBALS — 引用全局作用域中可用的全部变量
说明 ¶

一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

 

在PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。如果要在函数体内访问外部定义的全局变量,可以通过global声明或者直接使用$GLOBALS来进行访问,例如:

<?php
$var1='www.111cn.net';
$var2='www.google.cn';
test();
function test(){
    $var1='taobao';
    echo $var1,'<br />';
 global $var1;
 echo $var1,'<br />';
    echo $GLOBALS['var2'];
}


结果将打印为:

taobao
www.111cn.net
www.google.cn

下面主要说明一下global和$GLOBALS的区别:

$GLOBALS['var']是外部的全局变量本身,而global $var是外部$var的同名引用或者指针,也就是说global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,而$GLOBALS[]确确实实调用的是外部的变量,函数内外会始终保持一致。


下面通过例子说明一下:

 

$var1=1;

$var2=2;

function test(){

    $GLOBALS['var2']=&$GLOBALS['var1'];

}

test();

echo $var2;
打印结果为1


$var1=1;

$var2=2;

function test(){

    global $var1,$var2;

    $var2=&$var1;

}

test();

echo $var2;
打印结果为2。为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址。导致实质的值没有改变。我们再来看一个例子吧。

 

$var1=1;

function test(){

    unset($GLOBALS['var1']);

}

test();

echo $var1;

因为$var1被删除了,所以什么东西都没有打印。

 

$var1=1;

function test(){

    global $var1;

    unset($var1);

}

test();

echo $var1;
打印结果为1。证明删除的只是别名|引用,起本身的值没有受到任何的改变。也就是说global $var其实就是$var=&$GLOBALS['var']。调用外部变量的一个别名而已。

图片指定大小然后由php相关函数来实现图片裁剪功能,前段的js效果在这里就不介绍了,大家可以到网上找有很多这类代码,我只整理了php操作部份。

方法一

 代码如下 复制代码

图片裁剪缩放函数,支持方位裁剪和自定义坐标裁剪
    /**
     * 图片裁剪函数,支持指定定点裁剪和方位裁剪两种裁剪模式
     * @param <string>  $src_file       原图片路径
     * @param <int>     $new_width      裁剪后图片宽度(当宽度超过原图片宽度时,去原图片宽度)
     * @param <int>     $new_height     裁剪后图片高度(当宽度超过原图片宽度时,去原图片高度)
     * @param <int>     $type           裁剪方式,1-方位模式裁剪;0-定点模式裁剪。
     * @param <int>     $pos            方位模式裁剪时的起始方位(当选定点模式裁剪时,此参数不起作用)
     *                                      1为顶端居左,2为顶端居中,3为顶端居右;
     *                                      4为中部居左,5为中部居中,6为中部居右;
     *                                      7为底端居左,8为底端居中,9为底端居右;
     * @param <int>     $start_x        起始位置X (当选定方位模式裁剪时,此参数不起作用)
     * @param <int>     $start_y        起始位置Y(当选定方位模式裁剪时,此参数不起作用)
     * @return <string>                 裁剪图片存储路径
     */
    function thumb($src_file, $new_width, $new_height, $type = 1, $pos = 5, $start_x = 0, $start_y = 0) {
        $pathinfo = pathinfo($src_file);
        $dst_file = $pathinfo['dirname'] . '/' . $pathinfo['filename'] .'_'. $new_width . 'x' . $new_height . '.' . $pathinfo['extension'];
        if (!file_exists($dst_file)) {
            if ($new_width < 1 || $new_height < 1) {
                echo "params width or height error !";
                exit();
            }
            if (!file_exists($src_file)) {
                echo $src_file . " is not exists !";
                exit();
            }
            // 图像类型
            $img_type = exif_imagetype($src_file);
            $support_type = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF);
            if (!in_array($img_type, $support_type, true)) {
                echo "只支持jpg、png、gif格式图片裁剪";
                exit();
            }
            /* 载入图像 */
            switch ($img_type) {
                case IMAGETYPE_JPEG :
                    $src_img = imagecreatefromjpeg($src_file);
                    break;
                case IMAGETYPE_PNG :
                    $src_img = imagecreatefrompng($src_file);
                    break;
                case IMAGETYPE_GIF :
                    $src_img = imagecreatefromgif($src_file);
                    break;
                default:
                echo "载入图像错误!";
                exit();
            }
            /* 获取源图片的宽度和高度 */
            $src_width = imagesx($src_img);
            $src_height = imagesy($src_img);
            /* 计算剪切图片的宽度和高度 */
            $mid_width = ($src_width < $new_width) ? $src_width : $new_width;
            $mid_height = ($src_height < $new_height) ? $src_height : $new_height;
            /* 初始化源图片剪切裁剪的起始位置坐标 */
            switch ($pos * $type) {
                case 1://1为顶端居左
                    $start_x = 0;
                    $start_y = 0;
                    break;
                case 2://2为顶端居中
                    $start_x = ($src_width - $mid_width) / 2;
                    $start_y = 0;
                    break;
                case 3://3为顶端居右
                    $start_x = $src_width - $mid_width;
                    $start_y = 0;
                    break;
                case 4://4为中部居左
                    $start_x = 0;
                    $start_y = ($src_height - $mid_height) / 2;
                    break;
                case 5://5为中部居中
                    $start_x = ($src_width - $mid_width) / 2;
                    $start_y = ($src_height - $mid_height) / 2;
                    break;
                case 6://6为中部居右
                    $start_x = $src_width - $mid_width;
                    $start_y = ($src_height - $mid_height) / 2;
                    break;
                case 7://7为底端居左
                    $start_x = 0;
                    $start_y = $src_height - $mid_height;
                    break;
                case 8://8为底端居中
                    $start_x = ($src_width - $mid_width) / 2;
                    $start_y = $src_height - $mid_height;
                    break;
                case 9://9为底端居右
                    $start_x = $src_width - $mid_width;
                    $start_y = $src_height - $mid_height;
                    break;
                default://随机
                    break;
            }
            // 为剪切图像创建背景画板
            $mid_img = imagecreatetruecolor($mid_width, $mid_height);
            //拷贝剪切的图像数据到画板,生成剪切图像
            imagecopy($mid_img, $src_img, 0, 0, $start_x, $start_y, $mid_width, $mid_height);
            // 为裁剪图像创建背景画板
            $new_img = imagecreatetruecolor($new_width, $new_height);
            //拷贝剪切图像到背景画板,并按比例裁剪
            imagecopyresampled($new_img, $mid_img, 0, 0, 0, 0, $new_width, $new_height, $mid_width, $mid_height);
            /* 按格式保存为图片 */
            switch ($img_type) {
                case IMAGETYPE_JPEG :
                    imagejpeg($new_img, $dst_file, 100);
                    break;
                case IMAGETYPE_PNG :
                    imagepng($new_img, $dst_file, 9);
                    break;
                case IMAGETYPE_GIF :
                    imagegif($new_img, $dst_file, 100);
                    break;
                default:
                    break;
            }
        }
        return ltrim($dst_file, '.');
    }

附件是一个有样例图片的测试demo。
不过,这个函数不支持动态gif图片的裁剪缩放。

方法二,

 代码如下 复制代码

<?php
list($src_w,$src_h)=getimagesize($src_img);  // 获取原图尺寸
$dst_scale = $dst_h/$dst_w; //目标图像长宽比
$src_scale = $src_h/$src_w; // 原图长宽比

if($src_scale>=$dst_scale)

 // 过高
 $w = intval($src_w);
 $h = intval($dst_scale*$w);
 $x = 0;
 $y = ($src_h - $h)/3;
}
else
{
// 过宽
 $h = intval($src_h);
 $w = intval($h/$dst_scale);
 $x = ($src_w - $w)/2;
 $y = 0;
}
// 剪裁
$source=imagecreatefromjpeg($src_img);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped,$source,0,0,$x,$y,$src_w,$src_h);
// 缩放
$scale = $dst_w/$w;
$target = imagecreatetruecolor($dst_w, $dst_h);
$final_w = intval($w*$scale);
$final_h = intval($h*$scale);
imagecopysampled($target,$croped,0,0,0,0,$final_w,$final_h,$w,$h);
// 保存
$timestamp = time();
imagejpeg($target, "$timestamp.jpg");
imagedestroy($target);
?>

方法三


根据自定义的目标图, 按目标图高宽比裁剪、缩放源图.

传入参数:

 代码如下 复制代码

$source_path string 源图路径

$target_width integer 目标图宽度

$target_height integer 目标图高度

支持图片类型: image/gif, image/jpeg, image/png.

function imagecropper($source_path, $target_width, $target_height)
{
 $source_info   = getimagesize($source_path);
 $source_width  = $source_info[0];
 $source_height = $source_info[1];
 $source_mime   = $source_info['mime'];
 $source_ratio  = $source_height / $source_width;
 $target_ratio  = $target_height / $target_width;

 // 源图过高
 if ($source_ratio > $target_ratio)
 {
  $cropped_width  = $source_width;
  $cropped_height = $source_width * $target_ratio;
  $source_x = 0;
  $source_y = ($source_height - $cropped_height) / 2;
 }
 // 源图过宽
 elseif ($source_ratio < $target_ratio)
 {
  $cropped_width  = $source_height / $target_ratio;
  $cropped_height = $source_height;
  $source_x = ($source_width - $cropped_width) / 2;
  $source_y = 0;
 }
 // 源图适中
 else
 {
  $cropped_width  = $source_width;
  $cropped_height = $source_height;
  $source_x = 0;
  $source_y = 0;
 }

 switch ($source_mime)
 {
  case 'image/gif':
   $source_image = imagecreatefromgif($source_path);
   break;

  case 'image/jpeg':
   $source_image = imagecreatefromjpeg($source_path);
   break;

  case 'image/png':
   $source_image = imagecreatefrompng($source_path);
   break;

  default:
   return false;
   break;
 }

 $target_image  = imagecreatetruecolor($target_width, $target_height);
 $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);

 // 裁剪
 imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
 // 缩放
 imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);

 header('Content-Type: image/jpeg');
 imagejpeg($target_image);
 imagedestroy($source_image);
 imagedestroy($target_image);
 imagedestroy($cropped_image);
}

PHP 代码要被 <?php 和 ?> 包裹,但你看到很多 PHP 会发现他们只有开头的 <?php 并没有 ?>,这是为什么呢

刚才在 segmentfault 上看到一段很不错的解释分享一下:

    如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、PHP 错误、之后的输出无法显示、空白页。因此,所有的 PHP 文件应该省略这个 PHP 闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。

所以,纯 PHP 文件最好不要 ?>,不是最好,是一定。

例子

 代码如下 复制代码

<?php
function funa($b,$c){
 echo $b;
 echo $c;
}
call_user_func('funa',"111","222");
call_user_func('funa',"333","444");
//结果输出:111 222 333 444
//大家有没有发现,这个用法有点像javascript中的call方法

总结,php不带结束的?>还可以为避免一些编码问题导致页面出错哦。

[!--infotagslink--]

相关文章

  • 百度网盟和google网盟推广那种效果好

    专做了百度和google的网盟推广以作推广效果的评估比较。百度的周期为6天,google为4天。   从百度的统计数据可以看出这六天的点击次数总共为464,平均点击花费了0.30元...2017-07-06
  • 如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)

    以下是使用js代码实现百度地图计算两地距离,代码如下所示:<script src="js/jquery-1.9.0.js" type="text/javascript" language="javascript"></script><script language="javascript" type="text/javascript" src="js/...2015-10-30
  • 百度联盟封号了解封申请攻略

    百度联盟封号对于许多的站长来说肯定是会影响到心情的,那么既然是百度联盟封号了我们就肯定有一些原因的,虽然不是你自己搞的或一些其它因素都有可能,我们下面整理一下百...2016-10-10
  • 基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标

    本文给大家介绍javascript实现高德地图和百度地图提取行政区边界经纬度坐标的相关知识,本文实用性非常高,代码简单易懂,需要的朋友参考下吧...2016-01-24
  • 网站被百度拔毛 一月重新回归经验分离

    网站被K后,笔者做的第一件事便是在网站上增加更新模块。百度算法更新,对于网站内容给予了相当大的权重,这是笔者网站最欠缺的部分,保证了及时的更新便有了吸引蜘蛛爬取的...2016-10-10
  • 如何用PS将百度熊抱枕做成大头枕?

    我们知道百度熊抱枕很大,只想要百度熊的大头,该怎么办呢?下面我们就来看看详细的教程。 1、首先打开photoshopCS6软件,新建一个“1600*1600”的白色背景图,并从右上角...2016-12-31
  • 如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)

    以下是使用js代码实现百度地图计算两地距离,代码如下所示:<script src="js/jquery-1.9.0.js" type="text/javascript" language="javascript"></script><script language="javascript" type="text/javascript" src="js/...2015-10-30
  • 怎么对百度网页搜索的检索指标进行评估

    用户为满足自己某种需求而来到搜索引擎的,判断用户的需求是做好网站的开始。只有准确地判断出用户需求,了解用户搜索的目的,才能合理地衡量出一个网站结果的质量好,做好搜...2016-10-10
  • 如何应对百度更新改动关键词

    网页头部head 部分:TITLE 、<mtea>部分 网站描述Description、keyword 内容中的关键词,大家优化时也都比较重视这部分的关键词优化,因为在查询搜索结果时此处出现的关键词...2017-07-06
  • JS实现获取来自百度,Google,soso,sogou关键词的方法

    这篇文章主要介绍了JS实现获取来自百度,Google,soso,sogou关键词的方法,结合实例形式分析了js获取来路页面的方法与相关搜索引擎关键词的处理技巧,需要的朋友可以参考下...2017-01-09
  • 帝国CMS最高效的几种随机文章的写法

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) php随机文章 方法1、WC写的高效随...2017-07-06
  • WinForm调用百度地图接口用法示例

    这篇文章主要介绍了WinForm调用百度地图接口用法,结合具体实例形式简单分析了WinForm WebBrower控件与前端百度接口交互的相关操作技巧,需要的朋友可以参考下...2020-06-25
  • Illustrator绘制百度云标志LOGO教程

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一说绘制百度云标志LOGO的教程,各位想知道具体绘制方法的使用者,那么下面就快来跟着小编一起看一看教程。...2016-09-14
  • Bootstrap框架动态生成Web页面文章内目录的方法

    这篇文章主要介绍了Bootstrap框架动态生成Web页面文章内目录的方法,利用Bootstrap中的Affix和ScrollSpy插件便可以实现,需要的朋友可以参考下...2016-05-14
  • PHPCMS实现自动推送URL到百度站长平台

    我们一起来看一篇关于PHPCMS实现自动推送URL到百度站长平台,希望此教程能够帮助到各位朋友。 百度站长平台开放url推送接口,可以使用调用接口的形式主动及时推送u...2016-11-25
  • 百度不更新网站原因分析

    百度不更新网站原因分析 今天我们来看一篇关于 哦,你是不是其它的之一呢,好了下面来看看各位站长总结了来百度不更新网页的原因吧。 一、首页的大flash图片。   ...2016-10-10
  • 百度指数工具分析关键词的价值

    仅仅凭自己的感觉是根本无法判断这个关键词的价值的,那么这时候我们就可以适当的应用一下百度指数工具,利用这个工具我们可以挖掘出一些有价值的关键词。 一、从百...2016-10-10
  • C# 10分钟完成百度人脸识别(入门篇)

    这篇文章主要介绍了C# 10分钟完成百度人脸识别(入门篇),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • 一篇入门的 Class 文章

    刚在大略浏览了一下首页更新的那篇有关Class的文章(指PHPE的那篇 http://www.phpe.net/articles/389.shtml ),很不错,建议看看。 对类的摸索~~俺用了半年时间才大概理解类的...2016-11-25
  • 网站的聚合页或站内搜索页怎么会沦为百度搜索打击对象

    网站运营是很多人向往的赚钱方法,一些网站会发现,自己做的聚合页面和站内搜索页面被百度搜索无情打击,这是为什么,不知道原因的伙伴下面跟小编一起来看看。 今天杨子...2017-07-06