10个超级有用值得收藏的PHP代码片段


Posted in PHP onJanuary 22, 2015

尽管PHP经常被人诟病,被人贬低,被人当玩笑开,事实证明,PHP是全世界网站开发中使用率最高的编程语言。PHP最大的缺点是太简单,语法不严谨,框架体系很弱,但这也是它最大的优点,一个有点编程背景的普通人,只需要学习PHP半天时间,就可以上手开始开发web应用了。

网上有人总结几种编程语言的特点,我觉得也挺有道理的:

PHP 就是: Quick and Dirty

Java 就是: Beauty and Slowly

Ruby 就是: Quick and Beauty

python 就是: Quick and Simple

在PHP的流行普及中,网上总结出了很多实用的PHP代码片段,这些代码片段在当你遇到类似的问题时,粘贴过去就可以使用,非常的高效,非常的省时省力。将这些程序员前辈总结出的优秀代码放到自己的知识库中,是一个善于学习的程序员的好习惯。

一、黑名单过滤

function is_spam($text, $file, $split = ':', $regex = false){ 

    $handle = fopen($file, 'rb'); 

    $contents = fread($handle, filesize($file)); 

    fclose($handle); 

    $lines = explode("n", $contents); 

    $arr = array(); 

    foreach($lines as $line){ 

        list($word, $count) = explode($split, $line); 

        if($regex) 

            $arr[$word] = $count; 

        else 

            $arr[preg_quote($word)] = $count; 

    } 

    preg_match_all("~".implode('|', array_keys($arr))."~", $text, $matches); 

    $temp = array(); 

    foreach($matches[0] as $match){ 

        if(!in_array($match, $temp)){ 

            $temp[$match] = $temp[$match] + 1; 

            if($temp[$match] >= $arr[$word]) 

                return true; 

        } 

    } 

    return false; 

}
$file = 'spam.txt'; 

$str = 'This string has cat, dog word'; 

if(is_spam($str, $file)) 

    echo 'this is spam'; 

else 

    echo 'this is not spam';

ab:3

dog:3

cat:2

monkey:2

二、随机颜色生成器
function randomColor() { 

    $str = '#'; 

    for($i = 0 ; $i < 6 ; $i++) { 

        $randNum = rand(0 , 15); 

        switch ($randNum) { 

            case 10: $randNum = 'A'; break; 

            case 11: $randNum = 'B'; break; 

            case 12: $randNum = 'C'; break; 

            case 13: $randNum = 'D'; break; 

            case 14: $randNum = 'E'; break; 

            case 15: $randNum = 'F'; break; 

        } 

        $str .= $randNum; 

    } 

    return $str; 

} 

$color = randomColor();

三、从网络下载文件
set_time_limit(0); 

// Supports all file types 

// URL Here: 

$url = 'http://somsite.com/some_video.flv'; 

$pi = pathinfo($url); 

$ext = $pi['extension']; 

$name = $pi['filename'];
// create a new cURL resource 

$ch = curl_init();
// set URL and other appropriate options 

curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_HEADER, false); 

curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 

curl_setopt($ch, CURLOPT_AUTOREFERER, true); 

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// grab URL and pass it to the browser 

$opt = curl_exec($ch);
// close cURL resource, and free up system resources 

curl_close($ch);
$saveFile = $name.'.'.$ext; 

if(preg_match("/[^0-9a-z._-]/i", $saveFile)) 

    $saveFile = md5(microtime(true)).'.'.$ext;
$handle = fopen($saveFile, 'wb'); 

fwrite($handle, $opt); 

fclose($handle);

四、Alexa/Google Page Rank
function page_rank($page, $type = 'alexa'){ 

    switch($type){ 

        case 'alexa': 

            $url = 'http://alexa.com/siteinfo/'; 

            $handle = fopen($url.$page, 'r'); 

        break; 

        case 'google': 

            $url = 'http://google.com/search?client=navclient-auto&ch=6-1484155081&features=Rank&q=info:'; 

            $handle = fopen($url.'http://'.$page, 'r'); 

        break; 

    } 

    $content = stream_get_contents($handle); 

    fclose($handle); 

    $content = preg_replace("~(n|t|ss+)~",'', $content); 

    switch($type){ 

        case 'alexa': 

            if(preg_match('~<div class="data (down|up)"><img.+?>(.+?) </div>~im',$content,$matches)){ 

                return $matches[2]; 

            }else{ 

                return FALSE; 

            } 

        break; 

        case 'google': 

            $rank = explode(':',$content); 

            if($rank[2] != '') 

                return $rank[2]; 

            else 

                return FALSE; 

        break; 

        default: 

            return FALSE; 

        break; 

    } 

} 

// Alexa Page Rank: 

echo 'Alexa Rank: '.page_rank('techug.com'); 

echo '

'; 

// Google Page Rank 

echo 'Google Rank: '.page_rank('techug.com', 'google');

五、强制下载文件

$filename = $_GET['file']; //Get the fileid from the URL 

// Query the file ID 

$query = sprintf("SELECT * FROM tableName WHERE id = '%s'",mysql_real_escape_string($filename)); 

$sql = mysql_query($query); 

if(mysql_num_rows($sql) > 0){ 

    $row = mysql_fetch_array($sql); 

    // Set some headers 

    header("Pragma: public"); 

    header("Expires: 0"); 

    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

    header("Content-Type: application/force-download"); 

    header("Content-Type: application/octet-stream"); 

    header("Content-Type: application/download"); 

    header("Content-Disposition: attachment; filename=".basename($row['FileName']).";"); 

    header("Content-Transfer-Encoding: binary"); 

    header("Content-Length: ".filesize($row['FileName']));
    @readfile($row['FileName']); 

    exit(0); 

}else{ 

    header("Location: /"); 

    exit; 

}

六、通过Email显示用户的Gravatar头像
 $gravatar_link = 'http://www.gravatar.com/avatar/' . md5($comment_author_email) . '?s=32';

  echo '<img src="' . $gravatar_link . '" />';

七、通过cURL获取RSS订阅数
$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,'https://feedburner.google.com/api/awareness/1.0/GetFeedData?id=7qkrmib4r9rscbplq5qgadiiq4');

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2);

$content = curl_exec($ch);

$subscribers = get_match('/circulation="(.*)"/isU',$content);

curl_close($ch);

八、时间差异计算函数
function ago($time)

{

   $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");

   $lengths = array("60","60","24","7","4.35","12","10");
   $now = time();
       $difference     = $now - $time;

       $tense         = "ago";
   for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {

       $difference /= $lengths[$j];

   }
   $difference = round($difference);
   if($difference != 1) {

       $periods[$j].= "s";

   }
   return "$difference $periods[$j] 'ago' ";

}

九、裁剪图片
$filename= "test.jpg";

list($w, $h, $type, $attr) = getimagesize($filename);

$src_im = imagecreatefromjpeg($filename);
$src_x = '0';   // begin x

$src_y = '0';   // begin y

$src_w = '100'; // width

$src_h = '100'; // height

$dst_x = '0';   // destination x

$dst_y = '0';   // destination y
$dst_im = imagecreatetruecolor($src_w, $src_h);

$white = imagecolorallocate($dst_im, 255, 255, 255);

imagefill($dst_im, 0, 0, $white);
imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);
header("Content-type: image/png");

imagepng($dst_im);

imagedestroy($dst_im);

十、检查网站是否宕机
function Visit($url){

       $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";$ch=curl_init();

       curl_setopt ($ch, CURLOPT_URL,$url );

       curl_setopt($ch, CURLOPT_USERAGENT, $agent);

       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

       curl_setopt ($ch,CURLOPT_VERBOSE,false);

       curl_setopt($ch, CURLOPT_TIMEOUT, 5);

       curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);

       curl_setopt($ch,CURLOPT_SSLVERSION,3);

       curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);

       $page=curl_exec($ch);

       //echo curl_error($ch);

       $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

       curl_close($ch);

       if($httpcode>=200 && $httpcode<300) return true;

       else return false;

}

if (Visit("http://www.google.com"))

       echo "Website OK"."n";

else

       echo "Website DOWN";
PHP 相关文章推荐
ip签名探针
Oct 09 PHP
MYSQL数据库初学者使用指南
Nov 16 PHP
实用函数2
Nov 08 PHP
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
9个实用的PHP代码片段分享
Jan 22 #PHP
PHP中的命名空间相关概念浅析
Jan 22 #PHP
PHP生成随机数的方法实例分析
Jan 22 #PHP
9条PHP编程小知识及易犯的小错误
Jan 22 #PHP
PHP将HTML转换成文本的实现代码
Jan 21 #PHP
php使用Cookie控制访问授权的方法
Jan 21 #PHP
PHP+MySQL修改记录的方法
Jan 21 #PHP
You might like
随机头像PHP版
2006/10/09 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
python生成器表达式和列表解析
2016/03/10 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
护士自我评价
2014/02/01 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
毕业生求职信范文
2014/06/29 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
考试作弊检讨书
2014/10/21 职场文书
工作能力自我评价2015
2015/03/05 职场文书
办公室日常管理制度
2015/08/04 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫