首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 常用函數速查手冊:文件、字符串、數組、正則核心函數詳解

     編輯:PHP 綜合知識

文件系統函數

函數用途關鍵點
file_exists($path)檢查文件/目錄是否存在返回 bool;受 open_basedir 限制
dirname($path)返回目錄部分dirname(__FILE__) 獲取當前腳本目錄(PHP 5.3+ 推薦 __DIR__)
file($path)整文件讀入數組(每行一元素含換行符)大文件慎用,記憶體壓力大
file_get_contents($path)整文件讀入字符串支援 offset/maxlen(PHP 5.1+),性能優於 file()

字符串處理函數

函數用途關鍵點
preg_split($pattern, $subject, $limit=-1)正則分割字符串為數組limit 限制分割片數;PREG_SPLIT_NO_EMPTY 過濾空元素
implode($glue, $pieces)數組元素拼接為字符串別名 join();$glue 預設空字符串
str_replace($search, $replace, $subject, &$count=null)字符串替換(區分大小寫)$search/$replace 可為數組;不區分大小寫用 str_ireplace()
substr_compare($main, $part, $offset, $length=null, $case_ins=false)從偏移位置比較子串返回 0/正/負;$case_ins=true 忽略大小寫
strcasecmp($s1, $s2)不區分大小寫比較兩字符串返回 0/<0/>0;二進制安全

正則表達式函數(PCRE)

函數用途關鍵差異
preg_match($pattern, $subject, &$matches=null, $flags=0, $offset=0)單次匹配,停在首個$matches[0] 全匹配,[1] 第一個捕獲組
preg_match_all($pattern, $subject, &$matches, $flags=PREG_PATTERN_ORDER)全局匹配所有PREG_SET_ORDER 調整輸出結構;返回匹配次數
preg_replace($pattern, $replace, $subject, $limit=-1, &$count=null)正則替換$replace 可用 $1 反向引用;$limit 限制替換次數
棄用提醒:ereg()/eregi()(POSIX 正則)已在 PHP 7.0 移除,請全面遷移至 PCRE(preg_* 系列)。

數組操作函數

函數用途備註
extract($array, $flags=EXTR_OVERWRITE, $prefix='')將關聯數組鍵值導入符號表為變量EXTR_PREFIX_ALL 等標誌控制衝突行為;EXTR_REFS 引用導入
usort($array, $callback)用戶自定義比較函數排序(重建數字鍵)回調返回 <0/0/>0;uasort() 保持關聯鍵
uksort($array, $callback)按鍵名用戶自定義排序同 usort 但比較鍵而非值

實用組合技巧

<?php
// 1. 讀取 CSV -> 數組 -> 過濾空行 -> 重建索引
$data = array_filter(array_map('str_getcsv', file('data.csv')), function($row) {
    return array_filter($row);  // 移除空字段
});
$data = array_values($data);  // 重建 0..N 索引

// 2. 多字段排序(usort 閉包)
usort($users, function($a, $b) {
    $cmp = strcmp($a['lastname'], $b['lastname']);
    return $cmp ?: strcmp($a['firstname'], $b['firstname']);
});

// 3. 安全導入變量(避免 extract 污染作用域)
$allowed = ['title', 'content', 'author'];
$vars = array_intersect_key($_POST, array_flip($allowed));
// 現在 $vars 只有白名單字段,可安全 extract($vars, EXTR_PREFIX_ALL, 'in')
?>

性能與陷阱提示

  • 大文件讀取:優先 fopen() + fgets() 流式處理,避免 file()/file_get_contents() 佔滿內存。
  • 正則效能:能用 strpos()/str_replace() 解決的不要用正則;必須用正則時預編譯複用 $re = '/pattern/'; preg_match($re, ...)。
  • extract() 風險:易覆蓋現有變量、引入不可控符號,模板引擎外禁用,若必須用請加 EXTR_PREFIX_ALL。
  • 排序穩定性:PHP 排序不穩定(相等元素相對位置可能變),多鍵排序需在回調中一次性比較完所有字段。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved