解决Discuz X3日志页面链接乱码错乱问题

清泛原创
现象:
 

基本可以看出它把<a>标签的其他属性也当成url的一部分了。

原因:
source\function\function_blog.php中如下代码正则表达式有漏洞:
$POST['message'] = preg_replace(array(
                        "/\<div\>\<\/div\>/i",
                        "/\<a\s+href\=\"([^\>]+?)\"\>/ie"
                ), array(
                        '',
                        'blog_check_url(\'\\1\')'
                ), $POST['message']);
它从href开头一个引号一直匹配到结束标签前的一个引号,这样肯定是不对的咯,因为除了href外,还有其他的属性。

解决方法:
改为如下代码,代码很简单,不解释。
$POST['message'] = preg_replace(array(
                        "/\<div\>\<\/div\>/i",
                        "/\<a\s+href\=\"([^\>]+?)\"[^>]*\>/ie"
                ), array(
                        '',
                        'blog_check_url(\'\\1\')'
                ), $POST['message']);

Discuz 日志页面 链接乱码

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部