我正在寻找一个针对URL的REGEXP BBCode。看了一下之后,我找到了this。
$message = preg_replace('@\[url=([^]]*)\]([^[]*)\[/url\]@', '<a href="$1">$2</a>', $message);
$message = preg_replace('@\[url\]([^[]*)\[/url\]@', '<a href="$1">$1</a>', $message);
当然,我知道这很容易打破,如图所示。
[url=#" onclick="javascript:alert('hax!');]test[/url]
其中输出以下内容。
<a href="#" onclick="javascript:alert('hax!');">test</a>
哪个不好。什么是[url =] [/ url]更好更安全的REGEXP?
如果重要,我在preg_replaces之前有这行代码。
$comment = mysql_real_escape_string(nl2br(strip_tags($_POST['comment'])));