我運行簡單的PHP代碼PHP str_replace函數錯誤
$myVariable = 1;
$myVariable2 = str_replace(array(1, 2, 3), array('do 25 lat', 'od 26 do 35 lat', 'pow. 35 r.z.'), $myVariable);
echo $myVariable2;
而且結果是:
做OD 26做戰俘。 35 r.z.5 lat lat
我檢查了不同的PHP版本。有任何想法嗎?
我運行簡單的PHP代碼PHP str_replace函數錯誤
$myVariable = 1;
$myVariable2 = str_replace(array(1, 2, 3), array('do 25 lat', 'od 26 do 35 lat', 'pow. 35 r.z.'), $myVariable);
echo $myVariable2;
而且結果是:
做OD 26做戰俘。 35 r.z.5 lat lat
我檢查了不同的PHP版本。有任何想法嗎?
你犧牲品的文檔中指定的疑難雜症 - 看看在「注意事項」的str_replace
documentation
更換爲了疑難雜症
由於str_replace()函數替換左到右,它在進行多次替換時可能會替換先前插入的值。另請參閱本文檔中的示例。
本質上發生了什麼是順序更換,爲你傳遞一個數組作爲第二個參數:
這是因爲str_replace
陣列對被一個接一個地應用。
嘗試strtr
:
$myVariable = 1;
$replacePairs = array(
1 => "do 25 lat",
2 => "od 26 do 35 lat",
3 => "pow. 35 r.z."
);
$myVariable2 = strtr($myVariable,$replacePairs);
echo $myVariable2;
這是不是一個錯誤,這是str_replace
正常行爲。這個函數會遍歷你的search
數組並且每次發現一個事件時,它會用相關的replace
替換它。
這樣:
(search and match 1) 1 -> "do 25 lat"
(search and match 2) "do 25 lat" -> "do od 26 do 35 lat5 lat"
(search and match 3) "do od 26 do 35 lat5 lat" -> "do od 26 do pow. 35 r.z.5 lat5 lat"
什麼輸出你期待? – 2014-10-29 09:59:12
[str \ _replace with array]的可能重複(http://stackoverflow.com/questions/13715826/str-replace-with-array) – 2014-10-29 10:01:59