php从字符串中的数组替换键的所有出现

pet*_*ter 7 php replace

也许这是重复但我找不到好的解决方案.

我有阵列

$list = Array
(
   [hi] => 0
   [man] => 1
);
$string="hi man, how are you? man is here. hi again."
Run Code Online (Sandbox Code Playgroud)

它应该产生 $final_string = "0 1, how are you? 1 is here. 0 again."

我怎样才能以聪明的方式实现它?非常感谢.

Joh*_*nde 16

脱离我的头顶:

$find       = array_keys($list);
$replace    = array_values($list);
$new_string = str_ireplace($find, $replace, $string);
Run Code Online (Sandbox Code Playgroud)


Ama*_*ali 11

可以使用一行完成strtr().

引用文档:

如果给出两个参数,则第二个应该是表单中的数组array('from' => 'to', ...).返回值是一个字符串,其中所有出现的数组键都已被相应的值替换.将首先尝试最长的密钥.替换子字符串后,将不再搜索其新值.

要获取修改后的字符串,您只需执行以下操作:

$newString = strtr($string, $list);
Run Code Online (Sandbox Code Playgroud)

这将输出:

0 1, how are you? 1 is here. 0 again.
Run Code Online (Sandbox Code Playgroud)

演示.

  • 为什么这不是公认的答案?此功能旨在完成 OP(和我)正在寻找的内容。 (4认同)
  • @scipilot:这是[西方最快的枪](http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem)问题:) (2认同)