我正在运行简单的PHP代码
$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 lat5 lat
我检查了不同的PHP版本。有什么想法吗?
答案 0 :(得分:4)
您正在成为文档中指定的 gotcha 的受害者 - 请查看str_replace
documentation
替换订单问题
因为str_replace()从左向右替换,所以在执行多次替换时,它可能会替换先前插入的值。另请参阅本文档中的示例。
基本上正在发生的是顺序替换,因为您将数组作为第二个参数传递:
答案 1 :(得分:1)
这是因为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;
答案 2 :(得分:1)
这不是错误,这是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"