正则表达式替换超链接以外的单词

时间:2017-01-23 09:08:43

标签: php regex

我创建了一个php函数来替换我想在文本中突出显示的单词。我唯一的问题是输入文本也可以是一些HTML代码。这会导致现有超链接中断。

public static function addLinks($text) {

    $array_of_words = array("this", "is", "a", "test");

    //replace the array_of_words with hyperlinks
    $pattern = '#(?<=^|\W)('. implode('|', array_map('preg_quote', $array_of_words)) . ')(?=$|\W)#i';
    $callback = function ($match) {
        return "<a href=" . url('search') . "?search=" . urlencode($match[0]) . ">" . $match[0] . "</a>";
    };
    return preg_replace_callback($pattern, $callback, $text);
}

问题;是否可以在一段html代码上使用正则表达式函数,但是对a元素进行例外处理?否则html代码格式不正确。

0 个答案:

没有答案