正则表达式替换字符串中的单词,如果它不是链接

时间:2015-08-02 09:52:41

标签: php regex

我使用以下内容查找并替换字符串$content中的字词:

$replacedcontent = preg_replace('/\b'.$term_name.'\b/u', '<a class="highlight">'.$term_name.'</a>', $content);

是否有一种简单的方法可以使用正则表达式来替换单词,如果它们之前没有<a href="[link to somewhere]">标记?

1 个答案:

答案 0 :(得分:3)

使用否定先行断言。这将替换锚标记内不存在的所有$term_name

preg_replace('/\b'.$term_name.'\b(?!(?:(?!<\/?a\b[^>]*>).)*?<\/a>)/u', '<a class="highlight">'.$term_name.'</a>', $content);

DEMO