PHP 字符串核心處理函數速查
1. 轉義與還原
- addslashes($str):為單引號、雙引號、反斜線、NULL 字符加反斜線,常用於 SQL 語句構建(但推薦使用參數綁定)。
- stripslashes($str):移除 addslashes 添加的反斜線。
- addcslashes($str, $charlist):指定字符列表加反斜線,如
addcslashes($str, 'A..z')。
- stripcslashes($str):還原 addcslashes。
2. 截取與長度
- substr($str, $start, $length):
$start 為正從開頭計,負從結尾計;$length 省略則截取到結尾。
- mb_substr():多字節編碼(UTF-8)安全截取,需 mbstring 擴展。
- strlen($str):字節長度;mb_strlen():字符長度。
3. 分割與合併
- explode($sep, $str, $limit):按字符串分隔符分割為數組。
- implode($glue, $arr) / join():數組元素用分隔符合併為字符串。
- preg_split($pattern, $str):正則分割,功能更強。
- str_split($str, $len):固定長度分割為數組。
4. 替換
- str_ireplace($search, $replace, $subject, &$count):不區分大小寫替換,返回新字符串,$count 返回替換次數。
- str_replace():區分大小寫版本。
- substr_replace($str, $replacement, $start, $length):按位置長度替換子串。
- preg_replace($pattern, $replacement, $subject):正則替換,支持回調
preg_replace_callback()。
5. 檢索與比較
- strpos($haystack, $needle, $offset) / stripos():查找首次出現位置(區分/不區分大小寫),返回 false 表示未找到。
- strrpos() / stripos():查找最後一次出現位置。
- strstr($haystack, $needle, $before_needle) / stristr():返回從首次出現到結尾的子串。
- strrchr():返回從最後一次出現到結尾。
- substr_count($haystack, $needle):統計子串出現次數。
- strcmp() / strcasecmp() / strnatcmp() / strnatcasecmp():字符串比較(自然排序版)。
6. 去除空白與特殊字符
- trim($str, $charlist):去除首尾字符(預設空白字符:空格、\t、\n、\r、\0、\x0B)。
- ltrim() / rtrim():單側去除。
7. HTML 實體轉換
- htmlentities($str, $flags, $encoding):所有適用字符轉為 HTML 實體。
- htmlspecialchars($str, $flags, $encoding):僅轉換 & < > " ' 五個特殊字符,性能更好,防 XSS 首選。
- html_entity_decode() / htmlspecialchars_decode():逆向轉換。
8. 正則表達式 (PCRE)
- preg_match($pattern, $subject, &$matches):匹配一次,返回 0/1。
- preg_match_all():全局匹配,返回匹配次數,$matches 為多維數組。
- preg_grep($pattern, $array):過濾數組元素。
- preg_replace($pattern, $replacement, $subject, $limit, &$count):替換。
- preg_split($pattern, $subject, $limit, $flags):分割。
定界符常用 /pattern/flags,常用修飾符:i(忽略大小寫) m(多行) s(單行模式,.匹配換行) u(UTF-8)。
9. 格式化與補全
- sprintf($format, ...$args) / vsprintf():C 風格格式化,常用
%s %d %f %02d。
- number_format($num, $decimals, $dec_point, $thousands_sep):數字格式化(千分位、小數位)。
- str_pad($str, $len, $pad_str, $pad_type):字符串填充對齊。
- wordwrap($str, $width, $break, $cut):自動換行。
10. 大小寫轉換
- strtolower() / strtoupper() / ucfirst() / ucwords() / lcfirst():多字節安全版請用
mb_strtolower() 等。
性能提示
- 簡單字符串操作優先用非正則函數(strpos/str_replace/explode 等),速度遠快於 preg_*。
- 大量拼接字符串建議用數組收集最後
implode(),避免重複內存分配。
- 多字節環境(UTF-8)務必使用
mb_* 系列函數,防止截斷亂碼。