str_replace() 是 PHP 最常用的字串替換函數,支援單字串、陣列批量替換、大小寫敏感。本文說明基本語法、參數順序、陣列用法、常見陷阱與效能提醒。
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
$search:被搜尋的字串或陣列$replace:替換成的字串或陣列$subject:目標字串或陣列$count:選填,回傳實際替換次數$begintime = str_replace('-', '', '2014-03-05');
echo $begintime; // 輸出:20140305
$search = array('a', 'b', 'c');
$replace = array('A', 'B', 'C');
$subject = 'abc def';
echo str_replace($search, $replace, $subject); // 輸出:ABC def
$str = 'apple apple banana';
$new_str = str_replace('apple', 'orange', $str, $count);
echo $new_str; // orange orange banana
echo $count; // 2
| 陷阱 | 說明 | 解決 |
|---|---|---|
| 順序敏感 | 陣列替換按索引順序,前次替換結果會影響後續 | 若需同時替換,用 strtr() 或排序陣列長度遞減 |
| 大小寫敏感 | 預設區分大小寫 | 不區分大小寫用 str_ireplace() |
| 多位元組字元 | UTF-8 中文屬多位元組,但 str_replace 按位元組處理,通常無問題 | 極少數邊界情況需用 mb_ereg_replace() |
| 巢狀替換 | replace 內容包含 search 字串會被再次替換 | 避免 replace 內容包含 search,或用 preg_replace() 控制 |
str_replace() > preg_replace()(簡單替換)strtr() 效能約為 str_replace() 4 倍(單字元/固定字串映射)strtr() 或單次 preg_replace() 正則合併。str_replace() 直觀、高效、支援陣列批量操作,是字串處理首選工具。掌握參數順序、陣列對應關係、大小寫敏感選項與計數器用法,能覆蓋絕大多數字串替換需求。