我知道这已经在其他地方提出来了,但是我找不到确切的情况(并理解它!),所以我希望有人可以在这里提供代码帮助。
需要进行一系列更改。简化为:
$title = "Tom's wife is called Tomasina";
$change_to = array(
"Tom" => "Fred",
"wife" => "girlfriend",
);
$title = preg_replace_callback('(\w+)', function( $match )use( $change_to ) {
return $array[$match[1]];
}, $title);
我希望找回“弗雷德的女友叫Tomasina”,但根据我如何调整代码,我得到了各种各样的东西-都不起作用!
我可以肯定我遗漏了一些显而易见的东西,如果看不到,我深表歉意!
谢谢!
答案 0 :(得分:1)
有几个问题:
$change_to
,而不是$array
/.../
,/\w+/
)$change_to
中没有这样的项目,则返回匹配值,否则它将被删除(可以使用isset($change_to[$match[0]])
进行检查)。使用
$title = "Tom's wife is called Tomasina";
$change_to = array(
"Tom" => "Fred",
"wife" => "girlfriend",
);
$title = preg_replace_callback('/\w+/', function( $match ) use ( $change_to ) {
return isset($change_to[$match[0]]) ? $change_to[$match[0]] : $match[0];
}, $title);
echo $title;
// => Fred's girlfriend is called Tomasina
请参见PHP demo。
此外,如果您的字符串可以包含任何Unicode字母,请使用'/\w+/u'
正则表达式。