BBCode [url]和[url =]相互干扰

时间:2013-07-13 17:56:50

标签: php bbcode

对不起标题,英语不是我的主要语言。 无论如何问题是如果有人同时使用[url] url [/ url]和[url = urlgoeshere] title [/ url] 它搞砸了。例如:

[url]www.stackoverflow.com[/url]
[url=www.stackoverflow.com]Stackoverflow[/url]

输出:

Stackoverflow" target="blank">www.stackoverflow.com
[url=www.stackoverflow.com]Stackoverflow

应该是:

www.stackoverflow.com
Stackoverflow

现在如果我单独使用它们就没问题了。我该怎么办?

function parse_forum_post($str, $hide_smilies = false) {

// make it safe for output
$str = htmlspecialchars($str);

$str = nl2br($str);

$find = array(
    '!\[url\](.+)\[/url\]!is',
    '!\[url=(.*)\](.+)\[/url\]!is',
    '!\[b\](.+)\[/b\]!isU', 
    '!\[i\](.+)\[/i\]!isU', 
    '!\[u\](.+)\[/u\]!isU',
    '!\[code\](.+)\[/code\]!isU',
    '!\[img\](.+)\[/img\]!isU'
);

$replace = array(
'<a href="$1" target="blank">$1</a>',
'<a href="$1" target="blank">$2</a>',
'<b>$1</b>', 
'<i>$1</i>', 
'<u>$1</u>',
'<pre>$1</pre>',
'<a href="$1" target="blank"><img src="$1" class="post_img"></a>'
);

return preg_replace($find, $replace, $str);

0 个答案:

没有答案