在PHP的str_replace
manual中,它说明了以下内容:
由于
str_replace()
从左到右替换,因此在执行多次替换时,它可能会替换先前插入的值。另请参阅本文档中的示例。
是否存在没有此问题的等效功能或我如何安全地执行此操作?
答案 0 :(得分:11)
您正在寻找strtr ( string $str , array $replace_pairs )
。
如果给出两个参数,则第二个应该是表单数组中的数组('from'=>'到',...)。返回值是一个字符串,其中所有出现的数组键都已被相应的值替换。 最长密钥将尝试优先。替换子字符串后,将再次搜索其新值 。
手册中的示例:
<?php
$trans = array("h" => "-", "hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>
将输出:
大家好,我说嗨
这应该是你需要的。
答案 1 :(得分:0)
使用preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
我非常确定你可以让它替换所有的值,如果那就是你所要求的那个。
或者你可以分成几块,如果有一个替换你想要的命令
$value = preg_replace($pattern1, '..', $value);
$value = preg_replace($pattern2, '..', $value);
$value = preg_replace($pattern3, '..', $value);