Discuz帖子页网页源码开头空行

本文记录了Discuz源文件 ./source/class/table/table_forum_hotreply_number.php 开头空白行及插件模板结尾空行导致帖子页源码开头空行问题。

发现问题

Discuz帖子页网页源码开头处有一个空行,如图所示,是discuz官网截图

discuz网页源码空行

discuz网页源码空行

一开始并没有注意,写LaTeX数学公式插件的时候,看到空行会随着插件调用的次数的增加而增多,才发现此问题

discuz网页开头空行

discuz网页开头空行

寻找解决方案

以关键词“discuz 网页源码 空白行” 搜到一些网页,以下是discuz官网的帖子

为什么disucz在贴子页多了一空白行?查看源代码多了一空白行?

winlia520 发表于 2014-4-6 14:35:24
为什么disucz在贴子页多了一空白行?查看源代码多了一空白行?

我以为是bom问题,后面我把所有文件转换为无bom,清除所有bom,还是没有得到解决方法
请求官方支缓,另外我怀疑这个问题 导致下载附件出解压后出问题 的

From: http://www.discuz.net/thread-3535282-1-1.html

可见这应该是discuz的一个bug,但是都一年了还没修复。

另外一个网页

thinkphp网页源码头有空行的解决方法

时间:2012-12-02
一次无意中查看网志博客网页源码,发现源码的顶头空了7行,如图:
这怎么回事?
我检查了一下模板,顶头并没发现什么空行。于是打开控制器,发现了问题,如图:

代码有空行!
去掉“<?php”和“?>”前后的空行,再查看网页源码,空行少了几行,可是还有两三行空白。打开项目模型类,再一次去掉“<?php”和“?>”前后的空行。再一次打开网页源码,发现顶头空行彻底消除!

小结:
前一次也由于类似的问题导致验证码无法正常显示,以致我折腾了好几天,我在“ThinkPHP验证码问题解决方法汇总”提到过,没想到代码空行还会导致网页源码头的空行,看来代码空行出现的问题还真多,不知以后还会惹出来什么麻烦。当然上面的问题暂时是解决了,但那是治标不治本的办法,治本的方法是:养成良好规范的编码习惯。

From: http://w3note.com/web/55.html

循着这个思路,查找discuz源码中的空行

#!/bin/bash
echo >find.log

for id in `find ./ -name "*.php"`;do
	echo $id |grep "data/log" &>/dev/null && continue
	str=`head -n 1 $id |tr -d '\r\n'`
	if [ "$str"x != "<?php"x ] ;then
		echo "$id : $str" |tee -a find.log
	fi
done

运行发现以下三个文件开头包含空行

./source/class/table/table_forum_hotreply_member.php : 
./source/class/table/table_forum_filter_post.php : 
./source/class/table/table_forum_hotreply_number.php :

经测试  ./source/class/table/table_forum_hotreply_number.php :  是导致有一个空行的原因。

接下来就是我插件的问题了,结尾的空行也会导致此问题,因此修改查找代码如下

#!/bin/bash
echo >find.log

for id in `find ./data/template/ -name "1_zxsq_*.php"`;do
	str=`sed -n '$p' $id`
	echo "$id : $str" |tee -a find.log
done

运行结果

[root@HADOOP-215 discuz]# ./find.sh 
./data/template/1_zxsq_goxiti.tpl.php : 
./data/template/1_zxsq_math.tpl.php : 

检查插件模板,发现确实是结尾多了一个空行

[root@HADOOP-215 template]# cat math.htm 
<!--{block math}-->
<div class="mathjax-math">
{$texcode}
</div>
<!--{/block}-->

[root@HADOOP-215 template]#

解决问题

sed -i "/^$/d" *.htm 删除之后,终于正常了。

discuz_normal

参考资料

[1]. http://www.discuz.net/thread-3535282-1-1.html
[2]. http://w3note.com/web/55.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注