带数组元素的Preg_replace

时间:2016-02-12 06:36:13

标签: php arrays preg-replace

我有如下数组:

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?

1 个答案:

答案 0 :(得分:0)

只需在正则表达式中添加单词边界\b

$name = preg_replace("/\b$v\b/i", $k, $name);
//              here __^^  ^^
相关问题