首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

10 個超實用 PHP 代碼片段:反垃圾、隨機色、下載、排名、強制下載、Gravatar、RSS、時間差、裁圖、站點監控

     編輯:PHP 相關知識

10 個超實用 PHP 代碼片段:反垃圾、隨機色、下載、排名、強制下載、Gravatar、RSS、時間差、裁圖、站點監控

PHP 雖常被調侃,但以「Quick and Dirty」之姿佔據全球 Web 開發首位。善用前輩沉澱的代碼片段,能大幅提升開發效率。以下 10 片段覆蓋高頻實戰場景,建議收藏至個人知識庫。

1. 黑名單關鍵字過濾(反垃圾評論/內容)

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(!isset($temp[$match])) $temp[$match] = 0;

$temp[$match]++;

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

}

return false;

}

// 關鍵字檔 spam.txt 格式:關鍵字:閾值

// ab:3

// dog:3

// cat:2

// monkey:2

2. 隨機十六進位顏色生成器

function randomColor() {

$str = '#';

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

$randNum = rand(0, 15);

if($randNum >= 10) $randNum = chr(ord('A') + $randNum - 10);

$str .= $randNum;

}

return $str;

}

$color = randomColor(); // 例:#3F7A2B

3. cURL 下載遠端檔案(支援大檔、斷點、重定向)

set_time_limit(0);

$url = 'https://example.com/video.flv';

$pi = pathinfo($url);

$ext = $pi['extension']; $name = $pi['filename'];

$ch = curl_init();

curl_setopt_array($ch, array(

CURLOPT_URL => $url,

CURLOPT_HEADER => false,

CURLOPT_BINARYTRANSFER => true,

CURLOPT_AUTOREFERER => true,

CURLOPT_FOLLOWLOCATION => true,

CURLOPT_RETURNTRANSFER => true

));

$opt = curl_exec($ch);

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);

4. Alexa / Google PageRank 查詢

function page_rank($page, $type = 'alexa'){

switch($type){

case 'alexa':

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

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

break;

case 'google':

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

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

break;

}

$content = stream_get_contents($handle);

fclose($handle);

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

// 解析邏輯略...

return $rank;

}

5. 強制下載(防止瀏覽器直接開啟)

$filename = $_GET['file'];

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

$sql = mysql_query($query);

if(mysql_num_rows($sql) > 0){

$row = mysql_fetch_array($sql);

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;

}

6. 根據 Email 顯示 Gravatar 頭像

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

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

7. cURL 獲取 FeedBurner RSS 訂閱數

$ch = curl_init();

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

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);

8. 人性化時間差顯示(X 秒/分/小時/天/週/月/年 前)

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

}

9. GD 圖片裁剪(指定區域複製到新畫布)

$filename = "test.jpg";

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

$src_im = imagecreatefromjpeg($filename);

$src_x = 0; $src_y = 0; $src_w = 100; $src_h = 100;

$dst_x = 0; $dst_y = 0;

$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);

10. 站點存活監控(cURL 檢測 HTTP 狀態碼)

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_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);

$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

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

}

if (Visit("https://www.google.com")) echo "Website OK"; else echo "Website DOWN";


這 10 個片段涵蓋:內容安全、視覺生成、網路傳輸、SEO 指標、檔案分發、用戶識別、數據聚合、時間格式化、圖像處理、基礎設施監控——幾乎是 PHP 後端工程師的「瑞士刀」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved