PHP的str_replace替代品

时间:2012-03-15 14:22:20

标签: php str-replace

在PHP的str_replace manual中,它说明了以下内容:

  

由于str_replace()从左到右替换,因此在执行多次替换时,它可能会替换先前插入的值。另请参阅本文档中的示例。

是否存在没有此问题的等效功能或我如何安全地执行此操作?

2 个答案:

答案 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);