PHP 內置函數超過 5000 個,許多強大卻鮮為人知。本文精選 21 個高價值函數,涵蓋系統監控、二進制處理、日期、國際化、瀏覽器識別、調試、排序、文件遍歷、驗證等場景。
$load = sys_getloadavg();
if ($load[0] > 80) {
header('HTTP/1.1 503 Too busy');
die('Server too busy. Try later.');
}
// Windows 不支持,可用 /proc/loadavg 兼容
用途:高負載時拒絕請求,保護服務器。
$hash = pack("H*", md5("password")); // 16 進制字符串 → 二進制
// PHP 5.4+ 直接用
$hash = md5("password", true); // 返回原始二進制
節省存儲空間,網絡傳輸更緊湊。
$days = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // 當月天數
替代手寫閏年邏輯。
setlocale(LC_ALL, 'de_DE');
bindtextdomain("myApp", "./locale");
textdomain("myApp");
echo _("Have a nice day"); // 自動翻譯
WordPress __()、_e() 即基於此。
$browser = get_browser(null, true);
echo $browser['browser']; // Chrome, Firefox...
echo $browser['version']; // 版本號
需 browscap.ini,免去解析 User-Agent 正則。
function foo() { bar(); }
function bar() { debug_print_backtrace(); }
foo();
無需 Xdebug 即可快速定位調用鏈。
$items = ["100 apples", "5 apples", "110 apples", "55 apples"];
sort($items); // 字典序:100, 110, 5, 55
natsort($items); // 自然序:5, 55, 100, 110
符合人類直覺的排序。
foreach (glob("*.php") as $file) echo "$file\n";
// 僅目錄
$dirs = array_filter(glob($path.'*'), 'is_dir');
// 或用 GLOB_ONLYDIR 标志
$dirs = glob($path.'*', GLOB_ONLYDIR);
比 opendir/readdir 更簡潔。
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)); // bool(true)
var_dump(filter_var('abc', FILTER_VALIDATE_BOOLEAN)); // bool(false)
var_dump(filter_var('1', FILTER_VALIDATE_BOOLEAN)); // bool(true)
內置郵箱、URL、IP、布爾等驗證,PHP 5.2+ 可用。
stream_get_contents()、stream_context_create() — 流操作password_hash()/password_verify() — 密碼加密(PHP 5.5+)array_column() — 提取數組列(PHP 5.5+)json_encode()/json_decode() 配合 JSON_THROW_ON_ERROR(PHP 7.3+)fnmatch() — 文件名模式匹配str_contains()/str_starts_with()/str_ends_with()(PHP 8+)定期瀏覽 PHP 函數參考,避免重複造輪子,發現更優雅的解決方案。