也许这是重复但我找不到好的解决方案。
我有阵列
$list = Array
(
[hi] => 0
[man] => 1
);
$string="hi man, how are you? man is here. hi again."
应生成 $final_string = "0 1, how are you? 1 is here. 0 again."
我怎样才能以聪明的方式实现它?非常感谢。
答案 0 :(得分:16)
离开我的头顶:
$find = array_keys($list);
$replace = array_values($list);
$new_string = str_ireplace($find, $replace, $string);
答案 1 :(得分:10)
可以使用strtr()
在一行中完成。
引用文档:
如果给出两个参数,则第二个应该是
array('from' => 'to', ...)
形式的数组。返回值是一个字符串,其中所有出现的数组键都已被相应的值替换。将首先尝试最长的密钥。替换子字符串后,将不再搜索其新值。
要获取修改后的字符串,您只需:
$newString = strtr($string, $list);
这将输出:
0 1, how are you? 1 is here. 0 again.
答案 2 :(得分:1)
preg_replace
可能会有所帮助。
<?php
$list = Array
(
'hi' => 0,
'man' => 1
);
$string="hi man, how are you? Man is here. Hi again.";
$patterns = array();
$replacements = array();
foreach ($list as $k => $v)
{
$patterns[] = '/' . $k . '/i'; // use i to ignore case
$replacements[] = $v;
}
echo preg_replace($patterns, $replacements, $string);
答案 3 :(得分:0)
$text = strtr($text, $array_from_to)