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