整理高頻使用的 PHP 核心函數,按功能分類,附帶簡要說明與常見用法,適合開發時快速查閱。建議搭配 官方文檔 深入參數細節。
| 函數 | 用途 | 範例/備註 |
|---|---|---|
htmlspecialchars() | 特殊字元轉 HTML 實體(防 XSS) | htmlspecialchars($str, ENT_QUOTES, 'UTF-8') |
md5() / sha1() | 雜湊摘要(不適用密碼) | 密碼請用 password_hash() / password_verify() |
number_format() | 格式化數字(千分位、小數位) | number_format(1234.5, 2, '.', ',') // 1,234.50 |
preg_match() | 正則匹配 | 回傳 1/0/false;preg_match_all 取所有匹配 |
trim() / ltrim() / rtrim() | 移除首尾空白字元 | 預設移除空格、\t、\n、\r、\0、\x0B |
printf() / sprintf() | 格式化輸出/回傳字串 | sprintf('%04d', 7) // '0007' |
str_replace() | 字串替換(支援陣列批量) | 區分大小寫;str_ireplace() 不區分 |
strip_tags() | 移除 HTML/PHP 標籤 | 第二參數允許保留標籤:strip_tags($str, '<b><i>') |
explode() | 字串分割成陣列 | explode(',', 'a,b,c');str_split() 按長度分割 |
implode() | 陣列合併成字串 | 別名 join() |
strpos() / stripos() | 尋找子串首次出現位置 | 嚴格用 === false 判斷未找到 |
strrchr() | 尋找字元最後一次出現,回傳含該字元後段 | strrchr('/path/file.php', '.') // '.php' |
strrpos() | 尋找子串最後一次出現位置 | |
strstr() / stristr() | 尋找子串首次出現,回傳含該子串後段 | 第三參數 true 回傳前段 |
substr() / mb_substr() | 截取子串(多位元組請用 mb_) | mb_substr($str, 0, 10, 'UTF-8') |
| 函數 | 用途 | 範例/備註 |
|---|---|---|
array_filter() | 回調過濾元素 | 保留鍵名;ARRAY_FILTER_USE_KEY 依鍵過濾 |
array_intersect() | 計算交集(比較值) | 鍵名保留;array_intersect_key() 比較鍵 |
array_merge() | 合併陣列(數值鍵重新索引) | + 運算子保留鍵名、先勝 |
array_pop() / array_push() | 堆疊操作(尾部彈出/壓入) | [] 語法等同 push |
array_rand() | 隨機取一或多個鍵名 | 不取值;array_shuffle() 打亂值 |
array_shift() / array_unshift() | 隊列操作(頭部彈出/壓入) | 數值鍵重新索引 |
array_sum() | 數值元素求和 | |
in_array() | 檢查值是否存在 | 第三參數 true 嚴格模式 |
range() | 建立區間陣列 | range(1, 10, 2) // [1,3,5,7,9] |
shuffle() | 打亂陣列順序(原地修改) | |
array_unique() | 移除重複值 | 保留首次出現鍵名;字串比較預設 |
| 函數 | 用途 | 範例/備註 |
|---|---|---|
date() | 格式化時間戳 | date('Y-m-d H:i:s');DateTime::format() 物件風格 |
getdate() | 取得時間資訊關聯陣列 | 含 year、mon、mday、hours、minutes、seconds、weekday 等 |
microtime(true) | 取得微秒級時間戳 | 回傳 float,適合效能計時 |
mktime() | 由日期時間構建時間戳 | 推薦 strtotime() 或 new DateTime() |
strtotime() | 解析英文文字日期 | strtotime('+1 week')、strtotime('first day of this month') |
DateTime 類別 | 現代 OO 日期時間 API | 不可變版 DateTimeImmutable、時區 DateTimeZone |
| 函數 | 用途 | 範例/備註 |
|---|---|---|
basename() | 取得路徑中的檔名 | basename('/path/file.txt') // 'file.txt' |
dirname() | 取得目錄路徑 | |
file_get_contents() | 讀取整檔內容成字串 | 支援 URL(需 allow_url_fopen);大檔案慎用 |
file() | 讀取整檔成陣列(每行一元素) | 含換行符;FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES |
fopen() | 開啟檔案指標(流操作基礎) | 模式:r/r+/w/w+/a/a+/x/x+;配合 fread/fwrite/fgets/feof/fclose |
pathinfo() | 解析路徑資訊 | 回傳 dirname/basename/extension/filename;第二參數指定單項 |
readfile() | 直接輸出檔案到輸出緩衝 | 大檔案下載不佔記憶體;回傳位元組數 |
is_file() / is_dir() | 判斷檔案/目錄是否存在 | |
mkdir() / rmdir() | 建立/刪除目錄 | mkdir($path, 0755, true) 遞迴建立 |
unlink() | 刪除檔案 | |
copy() / rename() | 複製/移動/重命名 | |
glob() | 模式匹配檔案列表 | glob('*.php') |
realpath() | 取得絕對路徑(解析符號連結) | 不存在回傳 false |
| 函數 | 用途 | 範例/備註 |
|---|---|---|
session_start() | 啟動/恢復 Session | 必在輸出前調用;session_status() 檢查狀態 |
session_destroy() | 銷毀 Session 資料 | 通常配合 $_SESSION = []、setcookie(session_name(), '', time()-3600) |
session_regenerate_id(true) | 重新生成 Session ID(防固定攻擊) | 登入成功後必呼叫 |
setcookie() | 設定 Cookie | setcookie('name', 'val', time()+3600, '/', '', true, true)(Secure、HttpOnly) |
$_COOKIE | 讀取 Cookie | 僅含瀏覽器發送的 Cookie |
| API | 說明 |
|---|---|
mysqli_connect() / new mysqli() | 建立連接 |
mysqli_query() / $mysqli->query() | 執行 SQL(非預處理) |
mysqli_prepare() / $mysqli->prepare() | 預處理語句(防注入核心) |
mysqli_stmt_bind_param() | 綁定參數 |
mysqli_stmt_execute() | 執行預處理 |
mysqli_stmt_get_result() | 取得結果集(需 mysqlnd) |
mysqli_fetch_assoc() / _array() / _object() / _row() | 逐行取資料 |
mysqli_affected_rows() | 影響行數 |
mysqli_insert_id() | 最後自增 ID |
mysqli_close() | 關閉連接 |
| PDO 等效 | new PDO()、prepare()、execute()、fetch(PDO::FETCH_ASSOC)、fetchAll()、lastInsertId()、beginTransaction/commit/rollBack |
mb_* 族函數(mb_strlen、mb_substr、mb_strpos...),並在腳本開頭宣告 mb_internal_encoding('UTF-8')。DateTimeImmutable + DateTimeZone,避免 date()、strtotime() 時區陷阱。mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) 或 PDO ATTR_ERRMODE => ERRMODE_EXCEPTION,拋出異常統一捕獲。