字串搜尋與處理是 PHP 開發的基礎技能。本文詳細介紹四個實用函式:stristr(大小寫不敏感搜尋並回傳剩餘字串)、stripos(大小寫不敏感搜尋位置)、strspn(計算字串開頭符合字元清單的長度)、convert_cyr_string(西里爾字元集轉換),並附上完整程式碼範例與輸出結果。
語法:stristr(string $haystack, string $needle) : string|false
$needle 在 $haystack 中第一次出現位置之後的所有字元(含 $needle 本身)false$str = "hello world";
$result = stristr($str, "w");
echo $result; // 輸出:world
語法:stripos(string $haystack, string $needle, int $offset = 0) : int|false
$needle 第一次出現的位置(索引從 0 開始)$offset 從何處開始搜尋false$str = "hello world";
$result = stripos($str, "w");
echo $result; // 輸出:6
$result = stripos($str, "l");
echo $result; // 輸出:2(第一個 l 的位置)
注意:需使用 === false 判斷未找到,因為位置 0 會被視為 false。
語法:strspn(string $string, string $charlist, int $start = 0, int $length = null) : int
$start 開始,計算連續有多少字元屬於 $charlist 內$length$str = "hello world";
$result = strspn($str, "khlleo");
echo $result; // 輸出:5
// 解析:h e l l o 皆在 "khlleo" 中,第 6 個字元為空格不在清單,故長度 5
語法:convert_cyr_string(string $str, string $from, string $to) : string
$from、$to 為單一字元代碼:k, w, i, a, dmb_convert_encoding 或 iconv$str = "hello world! ???";
echo $str . "<br/>"; // 原字串
echo convert_cyr_string($str, 'w', 'a'); // 輸出:hello world! ?.?
// 範例中將 windows-1251 (w) 轉為 x-mac-cyrillic (a),非西里爾字元可能異常
| 函式 | 用途 | 大小寫敏感 | 回傳值 | 常見場景 |
|---|---|---|---|---|
| stristr | 搜尋並取得剩餘字串 | 否 | 字串/false | 關鍵字高亮、截取特定標記後內容 |
| stripos | 搜尋位置索引 | 否 | 整數/false | 判斷是否包含、切割字串 |
| strspn | 計算符合字元長度 | 是(字元清單區分大小寫) | 整數 | 驗證前綴格式、解析定寬欄位 |
| convert_cyr_string | 西里爾編碼轉換 | 不適用 | 字串 | 舊系統俄語資料遷移 |
strstr:大小寫敏感版 stristrstrpos:大小寫敏感版 striposstrrpos/strripos:搜尋最後一次出現位置strcspn:計算不在字元清單的長度(互補)mb_strpos/mb_stristr:多位元組字串(UTF-8 中文)安全版本mb_* 系列函式,避免位元組截斷導致錯誤。false 時使用 === 或 !==。strspn 的 $charlist 區分大小寫,需注意傳入正確字元集。mb_convert_encoding 或 iconv,支援更完整的字元集。掌握 stristr、stripos、strspn 的差異與適用場景,能更精準地處理字串搜尋、截取、驗證等需求。convert_cyr_string 屬於特定編碼轉換工具,現代專案較少直接使用。建議建立個人常用字串函式速查表,提升開發效率。