PHP 擁有龐大的內建函數庫,許多強大的函數往往被開發者忽略。本文精選 10 個經典且實用的 PHP 函數,涵蓋系統監控、數據處理、調試、字符串操作等場景,助你編寫更高效、健壯的代碼。
該函數返回包含三個元素的數組,分別代表過去 1、5、15 分鐘的系統平均負載。在高併發場景下,可結合此函數實現「過載保護」:當負載超過閾值時主動終止腳本執行,防止服務器宕機。
$load = sys_getloadavg();
if ($load[0] > 10) {
die('系統負載過高,請稍後重試');
}
注意:此函數在 Windows 環境下不可用。
利用 pack('H*', md5($str)) 可將 32 位十六進制 MD5 字符串轉為 16 位二進制字符串,節省 50% 存儲空間,適合大量哈希值存儲場景。
無需手寫判斷閏年邏輯,一行代碼即可獲取指定年月的天數:
$days = cal_days_in_month(CAL_GREGORIAN, 2, 2024); // 返回 29
WordPress 等項目廣泛使用這對函數配合 gettext 實現多語言支持。_() 返回翻譯字符串,_e() 直接輸出。掌握它們是開發多語言應用的關鍵。
需配合 php_browscap.ini 使用。可獲取瀏覽器類型、版本、平台及支持特性(如 JavaScript、CSS 版本等)。
局限性:僅基於 User-Agent 判斷通用特性,無法檢測用戶實時關閉的功能(如禁用 JS)。
輸出完整的函數調用堆棧,包含文件路徑和行號。在遞歸、複雜調用鏈中排查「代碼如何執行到這裡」極其高效。
function recur() {
debug_print_backtrace();
// 輸出示例:
// #0 recur() called at [test.php:10]
// #1 iterate() called at [test.php:20]
}
返回單詞的 Metaphone 鍵值,發音相似的單詞鍵值相同。可用於模糊搜索、拼寫糾錯(僅限英文)。
echo metaphone('phone'); // FXN
echo metaphone('fone'); // FXN → 發音相同
標準排序下 100 在 5 前面,而 natsort() 按數值大小排序:
$items = ['100 apples', '5 apples', '110 apples', '55 apples'];
natsort($items);
// 結果:5 apples, 55 apples, 100 apples, 110 apples
計算將一字符串轉換為另一字符串所需的最少編輯操作(插入、刪除、替換)。拼寫糾錯、關鍵詞推薦的核心算法。
$dict = ['php', 'javascript', 'css'];
$input = 'japhp';
$closest = '';
$minDist = PHP_INT_MAX;
foreach ($dict as $word) {
$dist = levenshtein($input, $word);
if ($dist < $minDist) {
$minDist = $dist;
$closest = $word;
}
}
echo "Did you mean '$closest'?"; // 輸出 php
替代繁瑣的 opendir/readdir/closedir 組合,支持通配符模式:
foreach (glob('*.php') as $file) {
echo $file . PHP_EOL;
}
// 遞歸查找子目錄:glob('**/*.php', GLOB_BRACE)
這 10 個函數雖不常被提及,卻能解決具體痛點:sys_getloadavg 守護穩定性,pack 優化存儲,levenshtein 驅動智能推薦,glob 簡化 IO 操作。善用標準庫,事半功倍。