PHP preg_replace:匹配包含短划线的单词

时间:2013-11-25 11:08:25

标签: php regex

我在搜索字符串中的单词并将其转换为链接时遇到问题。如何进行搜索,将包含“ - ”的单词视为整个单词,而不是将“ - ”分隔为2个单词?

这是一个例子,如果我搜索“穷举”这个词,我的搜索功能也会匹配“非详尽”一词的部分,虽然我不希望这个词匹配。

$string = "Bla bla bla non-exhaustive blabla bla exhaustive";
$words = array('exhaustive','non-exhaustive');
foreach ($words as $word) {
    $string = preg_replace('/\b'.$word.'\b/i', '<a href=#>'.$word.'</a>',$string);
}

echo $string;

结果:

  

Bla bla bla非详尽 blabla bla 详尽

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

$string = preg_replace('/\b[^\-]' . preg_quote($word) . '\b/i', '<a href=#>' . $word . '</a>',$string);

应该做的伎俩:)

*编辑,亚历克斯只用了2秒击败了我:p