1. 位置查找函數
| 函數 | 說明 | 大小寫敏感 |
| strpos($haystack, $needle, $offset) | 首次出現位置 | 是 |
| stripos($haystack, $needle, $offset) | 首次出現位置 | 否 |
| strrpos($haystack, $needle, $offset) | 最後出現位置 | 是 |
| strripos($haystack, $needle, $offset) | 最後出現位置 | 否 |
注意: 返回 0 表示在開頭,需用 === false 判斷未找到。
2. 子字符串提取(雙字節安全)
| 函數 | 說明 |
| substr($str, $start, $length) | 按位置長度截取,負數從末尾計算 |
| mb_substr($str, $start, $length, $encoding) | 多字節編碼安全版本 |
| strstr($haystack, $needle, $before_needle) | 從 needle 首次出現處截取到末尾/開頭 |
| stristr() | strstr 不區分大小寫版 |
| strrchr($haystack, $needle) | 從 needle 最後出現處截取到末尾,常用於取文件名 |
3. 字符串替換
| 函數 | 說明 | 大小寫敏感 |
| str_replace($search, $replace, $subject, $count) | 批量替換,$count 返回替換次數 | 是 |
| str_ireplace() | 不區分大小寫版 | 否 |
| substr_replace($str, $replace, $start, $length) | 按位置長度替換 | 是 |
| strtr($str, $from, $to) / strtr($str, $pairs) | 字符級映射替換,$replace 不能為空 | 是 |
4. 長度計算
strlen($str) // 字節長度
mb_strlen($str, $encoding) // 字符長度(多字節安全)
5. 字符串比較
| 函數 | 說明 | 返回值 |
| strcmp($a, $b) | 二進制安全比較 | <0, 0, >0 |
| strcasecmp() | 不區分大小寫 | <0, 0, >0 |
| strnatcmp($a, $b) | 自然排序比較('2' < '10') | <0, 0, >0 |
| strnatcasecmp() | 自然排序+不區分大小寫 | <0, 0, >0 |
6. 分割為數組
| 函數 | 說明 | 推薦度 |
| explode($delimiter, $str, $limit) | 字符串分隔符分割,速度最快 | ★★★★★ |
| str_split($str, $length) | 固定長度分割 | ★★★★☆ |
| preg_split($pattern, $str, $limit, $flags) | 正則分割,功能最強 | ★★★★☆ |
| split($pattern, $str, $limit) | 已棄用/移除(PHP 7+) | ❌ |
7. 空白處理
trim($str, $charlist) // 兩端
ltrim($str, $charlist) // 左端
rtrim($str, $charlist) // 右端
8. 字符插入
chunk_split($str, $chunklen, $end) // 每 $chunklen 字符插入 $end(默認 \r\n)
9. ASCII 互轉
chr($ascii) // 數字轉字符
ord($char) // 字符轉 ASCII
10. HTML 相關
| 函數 | 說明 |
| nl2br($str, $is_xhtml) | \n 轉 /
|
| strip_tags($str, $allowable_tags) | 去除 HTML/PHP 標籤,可保留指定標籤 |
| htmlspecialchars($str, $flags, $encoding) | 特殊字符轉實體(& < > " ') |
| htmlentities($str, $flags, $encoding) | 所有可轉實體字符全部轉換 |
| htmlspecialchars_decode() / html_entity_decode() | 反向解碼 |
11. 大小寫轉換
strtolower($str) // 全小寫
strtoupper($str) // 全大寫
ucfirst($str) // 首字符大寫
ucwords($str) // 每個單詞首字母大寫
mb_strtolower() 等多字節版本
12. 數據庫/安全相關
| 函數/常量 | 說明 |
| addslashes($str) | ' " \ NUL 前加反斜杠 |
| stripslashes($str) | 移除反斜杠 |
| magic_quotes_gpc (已移除 PHP 5.4+) | 自動轉義 GET/POST/COOKIE,勿依賴 |
| get_magic_quotes_gpc() | 檢測是否開啟(已恆返回 false) |
現代最佳實踐建議
- 多字節環境統一用 mb_* 系列,設置
mb_internal_encoding('UTF-8')
- 分割優先用 explode(),非正則場景禁用 preg_split
- 輸出 HTML 必須 htmlspecialchars(),防 XSS
- 數據庫交互用預處理語句,勿用 addslashes 手動轉義
- 棄用 split()/ereg 系列,全面遷移到 PCRE (preg_*)
- 上一篇文章: PHP include/require 四大函數深度對比:加載機制、作用域與最佳實踐指南
- 下一篇文章: PHP split() 函數詳解:正則分割用法、棄用遷移指南與 explode/preg_split 最佳實踐
Copyright ©
程式碼之家 All Rights Reserved