PHP 雖常被調侃,但以「Quick and Dirty」之姿佔據全球 Web 開發首位。善用前輩沉澱的代碼片段,能大幅提升開發效率。以下 10 片段覆蓋高頻實戰場景,建議收藏至個人知識庫。
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
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
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);
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;
}
$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;
}
$gravatar_link = 'https://www.gravatar.com/avatar/' . md5($comment_author_email) . '?s=32';
echo '<img src="' . $gravatar_link . '" />';
$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);
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; $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);
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 後端工程師的「瑞士刀」。