对不起标题,英语不是我的主要语言。 无论如何问题是如果有人同时使用[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);