【发布时间】:2013-07-03 19:45:58
【问题描述】:
好的,这是我的情况...我在我的 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
那么,如果在现有链接中找到字符串,我如何修改此代码以不替换任何内容?
【问题讨论】:
-
简单回答:不要使用regexs on html
-
这不是我的脚本。我没有写这个插件。我只是想解决它。
标签: php regex replace preg-replace