preg_replace有两个相似的单词

时间:2014-03-13 10:18:04

标签: php regex preg-replace

我在斯洛伐克语中有两个非常相似的表达式有问题。我正在尝试替换html链接的表达式,这是我下面的示例代码。我在数组中有大约90个单词。

// mysql query above.
for($i=1;$i<=$datas[1];$i++) {
  $regex[] = '/('.htmlentities($rows['title'], ENT_QUOTES, 'UTF-8').')/i';
  $wrl[] = '<a href="'.URL.'link/'.urlencode($rows['alias']).'" class="underscored">'.strtolower($rows['title']).'</a>';
}
$content = preg_replace($regex, $wrl, $content);

但我有一个非常相似的问题; (nenasytene mastne kyseliny,nasytene mastne kyseliny)。 preg_replace从较长的单词中删除 ne ,这会导致单词链接到错误的文章。

2 个答案:

答案 0 :(得分:1)

尝试修改正则表达式,以便在要用链接替换的短语之前和之后指定单词边界\b

$regex[] = '/\b('.htmlentities($rows['title'], ENT_QUOTES, 'UTF-8').')\b/i';

答案 1 :(得分:0)

您可以使用\W前缀和附加正则表达式:

$regex[] = '/\W('.htmlentities($rows['title'], ENT_QUOTES, 'UTF-8').')\W/i';