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 相关文章推荐
支持php4、php5的mysql数据库操作类
Jan 10 PHP
php 无限级缓存的类的扩展
Mar 16 PHP
PHP 压缩文件夹的类代码
Nov 05 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
php简单浏览目录内容的实现代码
Jun 07 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
Jun 30 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
php通过curl模拟登陆DZ论坛
May 11 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
apache和PHP如何整合在一起
Oct 12 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
php5数字型字符串加解密代码
2008/04/24 PHP
php写的简易聊天室代码
2011/06/04 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
原生js实现验证码功能
2017/03/16 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Python读取mp3中ID3信息的方法
2015/03/05 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
台湾良兴购物网:EcLife
2019/12/01 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
nohup的用法
2012/11/26 面试题
党风廉政承诺书
2014/03/27 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL