雖然 PHP 在企業級應用的綜合功能上不如 Java 強大,但 Java 屬於重量級框架,部署與維護成本較高。因此在中小型系統開發中,PHP 凭藉輕量、上手快、生態豐富的優勢,佔據了不可撼動的主導地位。即使是淘寶這樣的大型電商平台,也採用「Java 後台邏輯 + PHP 前台展示」的混合架構。想快速入門 Web 後端開發,學習 PHP 依然是極具性價比的選擇。
int strlen(string $str):返回字串的字節長度(非字符數,中文需配合 mb_strlen)。
int strcmp(string $str1, string $str2):二進制安全比較,區分大小寫;相等返回 0,str1 > str2 返回 >0,否則 <0。int strcasecmp(string $str1, string $str2):不區分大小寫比較,規則同 strcmp。int strspn(string $str1, string $str2):返回 str1 中僅包含 str2 字符的最長前綴長度。int strcspn(string $str1, string $str2):返回 str1 中不包含 str2 任何字符的最長前綴長度。strtolower():全轉小寫strtoupper():全轉大寫ucfirst():首字符大寫ucwords():每個單詞首字符大寫nl2br():將換行符轉為 <br>(注意原文寫錯為 bl2br)htmlentities() / htmlspecialchars():特殊字符轉 HTML 實體,防 XSSstrip_tags():移除 HTML/PHP 標籤,可保留允許標籤get_html_translation_table():取得轉換對照表strtr():自定義字符替換映射strtok():按 token 切分字串explode():按分隔符分割成陣列implode():陣列合併為字串strpos() / strrpos():查找首次/最後一次出現位置str_replace():批量替換(支援陣列)strstr():返回首次出現位置及其後內容substr():截取子串(支援負數索引)substr_count():統計子串出現次數substr_replace():替換字串部分內容ltrim() / rtrim() / trim():移除左右/兩側指定字符(預設空白)str_pad():將字串填充至指定長度count_chars():字符頻率統計str_word_count():單詞計數適用場景:判斷 $_GET/$_POST 是否包含某參數(即使值為空字串、0、false 也返回 true)。
陷阱:?fo= 會通過檢測;?fo=0 也通過。不適合驗證「用戶是否輸入了有效內容」。
判定為空的值:""、0、"0"、null、false、array()、未聲明變量。
適用:表單必填欄位驗證。
不適用:允許用戶提交「0」的業務場景(如價格、數量)。
僅適用於「已確定參數存在」的二次檢測。若參數缺失會觸發 Notice,不可作為第一層防禦。
<?php
// 建議驗證順序:isset → empty → is_numeric
if (!isset($_GET['id'])) {
exit('缺少必要參數');
}
if (empty($_GET['id'])) {
exit('參數不能為空');
}
if (!is_numeric($_GET['id'])) {
exit('參數必須為數字');
}
$id = (int)$_GET['id']; // 安全轉型
?>
補充:checkdate($month, $day, $year) 可驗證日期合法性(含閏年)。
常見用途:
magic_quotes_gpc 決定是否 addslashesini_set('max_execution_time', 300) 延長執行時間error_reporting 區分開發/生產環境ini_set('memory_limit', '256M') 臨時提高記憶體上限ini_set('include_path', ini_get('include_path').':/your/path')確保相對路徑包含文件時基準目錄正確,避免「No such file」錯誤。
可註冊回調函數處理輸出內容(如壓縮、替換、快取)。
安全將變量轉為整數,支援指定進制(如 16 進制)。
<?php
error_reporting(0); // 關閉所有報錯
error_reporting(E_ERROR | E_WARNING | E_PARSE); // 僅報告嚴重錯誤
error_reporting(E_ALL); // 開發環境建議開啟
?>
mt_rand() 基於梅森旋轉演算法,速度約為 rand() 的 4 倍,隨機品質更高,建議優先使用。
範例:mt_rand(5, 15) 產生 5~15 之間隨機整數。
| 語句/函數 | 類型 | 返回值 | 多參數 | 典型用途 |
|---|---|---|---|---|
| echo | 語言結構 | void | 支援逗號分隔(無括號) | 高效輸出 |
| 語言結構 | 恆為 1 | 單參數 | 需在表達式中輸出時 | |
| print_r | 函數 | bool/string | 單參數 + 可選返回 | 陣列/物件結構檢視 |
| printf | 函數 | 輸出長度 | 格式化字串 + 多參數 | 格式化直接輸出 |
| sprintf | 函數 | 格式化字串 | 同 printf | 格式化後存入變量 |
| var_dump | 函數 | void | 多參數 | 調試:顯示型別、長度、值 |
關鍵細節:
echo "a","b" 合法;echo("a","b") 報錯。printf 佔位符支援 %2$s 指定參數順序。var_dump 會輸出型別與長度:string(5) "hello"。