首先来看一段代码(views/default/explore/ajax/list.tpl.htm):
<?php echo FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode(cjk_substr($val['message'], 0, 130, 'UTF-8', '...')))); ?>
这段代码的大致意思是调用 文章 的前130个字符,并格式化后输出。
但是开发人员并没有考虑周全,导致出现了以下问题:
$val['message']是含有BBCode的,当截取的前130个字符中,有BBCode,并且截取了一半,此时BBCode就无法正常解析了。
例如:截取前130个字符串为“AAAAAAAAA...AA[b]ZZZ”,此时parse_bbcode这个函数将不起作用,导致最终输出的内容含有未解析的BBCode
当然不止是在views/default/explore/ajax/list.tpl.htm这一个地方,任何符合以上情况的都可能出现相同的BUG,建议全面检查修复。
PS:
1、如果是截取摘要,不建议使用nl2br这个函数,因为不需要换行。
2、这是我向官方反馈的第4个有效BUG,如果可以,请求官方开放我的发布文章权限,下次可以提出更好的建议或教程,谢谢。
http://wenda.wecenter.com/question/23681
http://wenda.wecenter.com/question/23712
阅读全文
收起全文