新闻页面上有这么一段小代码:
$new_text = nl2br($text);
$file = file('tags.txt');
$str = $new_text;
foreach($file as $v) {
$v1 = explode(":", $v);
$str = preg_replace("/(".$v1[0].".*?)\b/iu", "<a href='http://".$v1[1]."'>\\1</a>", $str, 1);
}
echo $str;
文件标签.txt:
Ольга Бузова:site.ru/olga_buzova/
Ольгу Бузову:site.ru/olga_buzova/
Ольге Бузовой:site.ru/olga_buzova/
带有文本的变量 $text:
Ольга Бузова заявила, что является певицей, однако Ольге Бузовой не поверили.
由于这一切,我得到以下输出:
<a href="http://site.ru/olga_buzova/">Ольга Бузова</a> заявила, что является певицей, однако <a href="http://site.ru/olga_buzova/">Ольге Бузовой</a> не поверили.
代码将 tags.txt 文件中的链接与锚点(如果它们出现在文本中)一起放置。一切都很好,他识别直接重复并且不插入它们,但是如果找到第一个“Olga Buzova”,如何从文本中删除第二个锚点“Olga Buzova”?
声明一个临时数组来保存现有的 URL,并在每次迭代时检查数组是否包含这样的地址: