| 函式 | 大小寫敏感度 | 適用場景 |
|---|---|---|
| str_replace | 敏感 | 精確替換,效能稍佳 |
| str_ireplace | 不敏感 | 關鍵字過濾、使用者輸入正規化 |
// str_replace:區分大小寫
echo str_replace("seo", "hupeng", "seo studying SEO"); // hupeng studying SEO
// str_ireplace:不區分大小寫
echo str_ireplace("seo", "hupeng", "www.bkjia.com SEO"); // www.bkjia.com hupeng
str_replace($search, $replace, $subject) 三個參數皆支援陣列,行為如下:
| 參數組合 | 行為說明 | 範例結果 |
|---|---|---|
| search 為陣列,replace 為字串 | 將 search 每個值替換為 replace | str_replace(['m','i'], 'n', "my name is jim!") → ny nane ns jnn! |
| search 為字串,replace 為陣列 | 將 search 替換為 "Array" 字串(非預期) | str_replace('m', ['n','z'], "my name") → Arrayn aArraye |
| subject 為陣列 | 對每個元素分別替換,回傳陣列 | str_replace('m', 'n', ["my", "game"]) → ["ny", "gane"] |
| search、replace 皆為陣列 | 一一對應替換,search 多餘元素以空字串替換,replace 多餘被忽略 | str_replace(['m','i'], ['n','z'], "my name is jim!") → ny nane zs jzn! |
| 三參數皆為陣列 | 對 subject 每元素套用對應替換規則 | 回傳處理後的陣列 |
$str = "good golly miss molly!";
$newStr = str_replace("ll", "", $str, $count);
echo $count; // 2
$str = "汀。"; // 假設 Big5 編碼:汀=0xCD 0xA1,。=0xA1 0xA3
echo str_replace(" ", "", $str); // 全形空格 0xA1 0xA1
// 輸出 "停" (0xCD 0xA3) —— 因為逐位元組比對導致誤判
解決方案:使用 mb_str_replace(需 mbstring 擴充)或改用 UTF-8 編碼統一處理。
// 移除所有母音字母 $vowels = ['a','e','i','o','u','A','E','I','O','U']; $onlyConsonants = str_replace($vowels, "", "Hello World of PHP"); // Hll Wrld f PHP // 詞彙替換:健康飲食 → 夜宵清單 $phrase = "You should eat fruits, vegetables, and fiber every day."; $healthy = ["fruits", "vegetables", "fiber"]; $yummy = ["pizza", "beer", "ice cream"]; $newPhrase = str_replace($healthy, $yummy, $phrase); // You should eat pizza, beer, and ice cream every day.