分享

10个超级有用、必须收藏的PHP代码样例

 chenTUPI 2017-02-19

(点击上方公众号,可快速关注)

来源:程序师网

链接:www.techug.com/10-super-useful-php-code-snippets


作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用它开发过大型软件项目,也一定多少了解它的语法。


尽管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:///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:///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('~

(.+?)
~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 essay-headers 

    essay-header("Pragma: public"); 

    essay-header("Expires: 0"); 

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

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

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

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

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

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

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


    @readfile($row['FileName']); 

    exit(0); 

}else{ 

    essay-header("Location: /"); 

    exit; 

}


六、通过Email显示用户的Gravatar头像


 $gravatar_link = 'http://www./avatar/' . md5($comment_author_email) . '?s=32';

  echo '';


七、通过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);


essay-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";



【今日微信公号推荐↓】


更多推荐请看值得关注的技术和设计公众号


其中推荐了包括技术设计极客 和 IT相亲相关的热门公众号。技术涵盖:Python、Web前端、Java、安卓、iOS、PHP、C/C++、.NET、Linux、数据库、运维、大数据、算法、IT职场等。点击《值得关注的技术和设计公众号》,发现精彩!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约