我有如下数组:
function func($name){
$arr = [
'dog' => 'boo|pet|chinsu|lu',
'man' => 'david|peter|john|smith',
'woman' => 'marry|daisy|anna|tailor'
];
foreach($arr as $k=>$v) {
$name = preg_replace("/($v)/i",$k,$name);
}
return $name;
}
echo func('john'); //return 'man' => OK
echo func('peter'); //return 'doger' => Not OK
它应该返回'man'而不是'doger',但'pet'也存在于'peter'中。
如何修复此问题但仍使用preg_replace?
答案 0 :(得分:0)
只需在正则表达式中添加单词边界\b
:
$name = preg_replace("/\b$v\b/i", $k, $name);
// here __^^ ^^