PHP Regex用于捕获/替换不在HTML元素中的文本

时间:2017-12-11 22:38:28

标签: php regex

我目前正在尝试使用正则表达式来自动捕获,替换&链接文本位于更大的内容中。我能在一定程度上做到这一点。当我正在寻找的文本已经位于链接中时,我的问题出现了。

这是我目前的代码:

foreach( $items as $item ) {
    if( !empty($item->generic_url) ) {

        $search = $item->title;
        $url = $item->generic_url;
        $content = preg_replace("/($search)/i", "<a href=\"$url\">$1</a>", $content, 1);

    }
}

场景A (它应该首次出现“链接”自动链接):

$content = "This is some text that will link to another page";

场景B (它不应自动链接第一次出现的“链接”):

$content = "This is some text that will <a href='#'>link</a> to another page";

场景C (它不应该自动链接第一次出现的“链接”):

$content = "This is some text that <a href='#'>will link to</a> another page";

1 个答案:

答案 0 :(得分:0)

我能够根据这个问题得出答案: Ignore img tags in preg_replace

为了实现我的具体目标,我使用了以下代码:

$content = preg_replace("/<a.*?\/a>(*SKIP)(*FAIL)|\b($search)\b/i", "<a href="$url">$1</a>", $content, 1);

除了使用丢弃模式外,我还添加了一个单词边界,以确保没有匹配的部分单词。