次のような形式の CMS にリンクを投稿する場合:
[url=http://www.examplesite.eu]ExampleSite[/url]
タイトルの説明は、リンクテキストではなく URL です。(linktext=サンプルサイト)
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 を試みましたが、うまくいきません。また、strip_tags($text); も検討しました。しかし、これはリンクテキストからhtmlを取り除いています。
誰がこれに対する解決策を持っていますか?