我目前正在尝试使用正则表达式来自动捕获,替换&链接文本位于更大的内容中。我能在一定程度上做到这一点。当我正在寻找的文本已经位于链接中时,我的问题出现了。
这是我目前的代码:
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";
答案 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);
除了使用丢弃模式外,我还添加了一个单词边界,以确保没有匹配的部分单词。