これが私の状況です... 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
では、文字列が既存のリンク内にある場合、このコードを変更して何も置き換えないようにするにはどうすればよいですか?