php Regex捕获/替换HTML元素内的未位于未位于HTML元素中的文本



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

这是我当前的代码:

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";

我能够根据这个问题/答案来弄清楚它:忽略preg_replace中的img标签

要实现我的特定目标,我使用了以下代码:

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

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

相关内容

  • 没有找到相关文章

最新更新