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 相关文章推荐
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
探讨PHP中this,self,parent的区别详解
Jun 08 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
Laravel实现表单提交
May 07 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
laravel model 两表联查示例
2019/10/24 PHP
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
潜说js对象和数组
2011/05/25 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
详解Python中with语句的用法
2015/04/15 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Django实现单用户登录的方法示例
2019/03/28 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
Django中间件基础用法详解
2019/07/18 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
产品促销活动策划书
2014/01/15 职场文书
消防工作实施方案
2014/06/09 职场文书
留学推荐信怎么写
2015/03/26 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
被告答辩状范文
2015/05/22 职场文书