分類索引
PHP 提供超過 100 個字符串函數,按功能分類如下:
1. 查找與定位
| 函數 | 說明 |
strpos, stripos | 查找首次出現位置(區分/不區分大小寫) |
strrpos, strripos | 查找最後一次出現位置 |
strstr, stristr, strchr | 從首次出現處返回到結尾 |
strrchr | 從最後一次出現處返回到結尾 |
strspn, strcspn | 字符串中僅包含/不包含指定字符集的初始段長度 |
2. 子串提取
| 函數 | 說明 |
substr | 按位置/長度提取(字節級) |
mb_substr | 多字節編碼安全提取 |
substr_replace | 替換字符串一部分 |
3. 替換與轉換
| 函數 | 說明 |
str_replace, str_ireplace | 批量替換(區分/不區分大小寫),支持數組 |
substr_replace | 按位置替換 |
strtr | 字符級轉換,支持數組映射 |
strtolower, strtoupper | 全小寫/大寫 |
ucfirst, lcfirst | 首字符大/小寫 |
ucwords | 每個單詞首字母大寫 |
mb_strtolower 等 | 多字節版本 |
4. 比較與排序
| 函數 | 說明 |
strcmp, strcasecmp | 二元比較(區分/不區分大小寫) |
strnatcmp, strnatcasecmp | 自然排序比較 (2 < 10) |
strncmp, strncasecmp | 比較前 n 字符 |
similar_text | 計算相似度百分比 |
soundex, metaphone | 發音編碼比較 |
5. 分割與合併
| 函數 | 說明 |
explode | 按分隔符分割為數組 |
implode, join | 數組合併為字符串 |
str_split | 按固定長度分割 |
preg_split | 正則分割 |
parse_str | 查詢字符串解析為變量 |
6. 空白與格式化
| 函數 | 說明 |
trim, ltrim, rtrim, chop | 去除兩端/左/右空白(默認空白字符集) |
nl2br | 換行符轉 <br> |
wordwrap | 按寬度換行 |
chunk_split | 按長度分割並插入分隔符 |
printf, sprintf, vprintf | 格式化輸出 |
7. 編碼與轉義
| 函數 | 說明 |
htmlspecialchars, htmlentities | HTML 實體編碼 |
htmlspecialchars_decode, html_entity_decode | 解碼 |
addslashes, stripslashes | 添加/移除反斜槓 |
addcslashes, stripcslashes | 自定義字符集添加/移除反斜槓 |
quotemeta | 正則元字符轉義 |
urlencode, urldecode, rawurlencode, rawurldecode | URL 編碼/解碼 |
base64_encode, base64_decode | Base64 |
md5, sha1, hash, hash_hmac | 哈希摘要 |
mb_convert_encoding, iconv | 字符編碼轉換 |
8. 其他實用
| 函數 | 說明 |
strlen, mb_strlen | 長度(字節/字符) |
strrev | 反轉字符串 |
str_shuffle | 隨機打亂 |
strip_tags | 移除 HTML/PHP 標籤 |
crypt, password_hash, password_verify | 密碼哈希(推薦 password_* 系列) |
get_html_translation_table | 獲取 HTML 實體轉換表 |
money_format, number_format | 貨幣/數字格式化 |
chr, ord | ASCII 碼與字符互轉 |
常用組合模式
<?php
// 1. 生成 URL 友好 slug
function slugify($str) {
$str = mb_strtolower($str, 'UTF-8');
$str = preg_replace('/[^\p{L}\p{N}\s-]/u', '', $str); // 保留字母數字空格連字符
$str = preg_replace('/[\s-]+/', '-', $str);
return trim($str, '-');
}
// 2. 截取並保留完整單詞
function excerpt($text, $len = 100) {
if (mb_strlen($text) <= $len) return $text;
$excerpt = mb_substr($text, 0, $len);
$lastSpace = mb_strrpos($excerpt, ' ');
return $lastSpace ? mb_substr($excerpt, 0, $lastSpace) . '...' : $excerpt . '...';
}
// 3. 安全輸出 HTML 內容
function h($str) {
return htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
?>
總結
- 核心場景:查找用 strpos,替換用 str_replace,截取用 mb_substr,輸出用 htmlspecialchars,分割用 explode,合併用 implode。
- 多字節字符串必須用
mb_* 族函數。
- 正則操作用
preg_* 系列,簡單操作優先用字符串函數(性能優勢巨大)。
- 密碼處理只用
password_hash/password_verify,禁用 md5/sha1/crypt。