好的,这是我的情况……我在我的 vBulletin 论坛上安装了一个词汇表插件。如果在论坛上找到一个术语,它将用指向词汇表定义的链接替换该术语。
这是附加组件使用的正则表达式代码:
$findotherterms[] = "#\b$glossaryname\b(?=\s|[.,?!;:]\s)#i";
$replacelinkterms[] = "<span class=\"glossarycrosslinkimage\"><a href=\"$glossarypath/glossary.php?do=viewglossary&term=$glossaryid\"' onmouseover=\"glossary_ajax_showTooltip('$glossarypath/glossary_crosslinking.php?do=crosslink&term=$glossaryid',this,true);return false\" onmouseout=\"glossary_ajax_hideTooltip()\"><b>$glossaryname </b></a></span>";
$replacelinkterms[] = "<a href=\"glossary.php?q=$glossaryname\">$glossaryname</a>";
$glossaryterm = preg_replace($findotherterms, $replacelinkterms, $glossaryterm, $vbulletin->options['vbglossary_crosslinking_limit']);
return $glossaryterm;
问题是,如果论坛帖子中有一个包含现有术语的链接,插件将在链接内创建一个链接......
所以让我们说“测试”是一个词汇表,我有这个论坛帖子:
some forum post including <a href="http://www.test.com">test</a> link
该插件会将其转换为:
some forum post including <a href="http://www.<a href="glossary.php?q=test">test</a>.com"><a href="glossary.php?q=test">test</a> link
那么,如果在现有链接中找到字符串,我如何修改此代码以不替换任何内容?