在格式如下的 CMS 中发布链接时:
[url=http://www.examplesite.eu]ExampleSite[/url]
标题描述是 url 而不是链接文本。(linktext=ExampleSite)
html输出是这样的:
<a href="http://www.examplesite.eu" title="http://www.examplesite.eu">http://www.examplesite.eu</a>
它应该是:
<a href="http://www.examplesite.eu" title="ExampleSite">ExampleSite</a>
所以我尝试了 url_bbcode_include.php 并且可以改变 bbcode 的行为。
原文,注意title=部分:
$text = preg_replace('#\[url=([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\'\2\3\' target=\'_blank\' title=\'\2\3\'>\4</a>', $text);
修改为将链接文本显示为标题,注意 title= 部分:
$text = preg_replace('#\[url=([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\'\2\3\' target=\'_blank\' title=\'\4\'>\4</a>', $text);
修改后的 url_bbcode_include.php 效果很好,但是当链接文本使用颜色或其他 html 元素格式化时会出现问题。然后标题部分包含 html 之类的<span style=
并破坏链接的正确显示。
所以我试图在 title= 部分中删除标签,但我无法让它工作。还探索了 strip_tags($text); 但这也从链接文本中剥离了 html。
谁有这个解决方案?