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(PHPBB的代码)
Oct 09 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php遍历文件夹所有文件子文件夹函数代码
Nov 27 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
Symfony2联合查询实现方法
Mar 18 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
Sep 02 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 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数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python 判断网络连通的实现方法
2018/04/22 Python
Python实现分段线性插值
2018/12/17 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
python使用建议与技巧分享(一)
2020/08/17 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
几道数据库的概念性面试题
2014/05/30 面试题
《湘夫人》教学反思
2014/02/21 职场文书
实习协议书范本
2014/04/22 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
小学教师教学随笔
2015/08/14 职场文书
Elasticsearch 基本查询和组合查询
2022/04/19 Python