preg_replace:BB代码到HTML URL

时间:2014-11-18 18:59:50

标签: php regex bbcode

我这里有一个小脚本用HTML代码替换BB代码。一切正常,但URL。

$bbextended = array(
"/\[URL=(.*?)\](.*?)\[\/URL\]/i" => "<a href=\"$1\" title=\"$1\">$2</a>"
);

foreach($bbextended as $match=>$replacement){
$bbtext = preg_replace($match, $replacement, $bbtext);
}

输入

[URL="http://somewebsite.come/something"]Some Website Title[/URL]

输出

<a href=""http://somewebsite.come/something"" title=""http://somewebsite.come/something"">Some Website Title</a>

有双引号,显然不是那么好。

我试过

$bbextended = array(
"/\[URL=\"(.*?)\"\](.*?)\[\/URL\]/i" => "<a href=\"$1\" title=\"$1\">$2</a>"
);

在代码中,但它没有工作。我还试图在HTML代码中省略$1周围的转义符号和引号,但它既不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您应该使用真正的解析器,例如jBB http://jbbcode.com/

答案 1 :(得分:0)

当我

设置查找字符串= '/\[URL="(.*?)"\](.*?)\[\/URL\]/i'

设置替换字符串= '<a href="$1" title="$1">$2</a>'

我使用简单的preg_replace

得到了这个
<a href="http://somewebsite.come/something" title="http://somewebsite.come/something">Some Website Title</a>