修复 Typecho 使用 <!--more--> 后的过多 <br> 标签——记一次离奇的 bug 修复

93 阅读1分钟

使用了 <!--more--> 分隔符后,首页的文章显示中出现了一大片空白,审查元素发现。多了好多<br> 标签。其实这个问题老早就发现了,不过今天特别不爽于是想修复一下。

在网上查了查资料,说是 Typecho 对于换行符的替换处理问题,不过按照网上的方法似乎并没有完全解决。

网上的方法是 注释掉在/var/hyperDown.php 文件1177行:

//$str = preg_replace("/\n/", "<br>", $str);

但是经过测试后发现这样做会让段内全部换行全部失效,并不合适。

一个很离奇的尝试,我试着将替换后的 <br> 标签闭合,即将这一行改成这样:

$str = preg_replace("/\n/", "<br />", $str);

莫名其妙的就让 bug 消失了,审查元素的时候也只是发现多余的 <br> 标签被清理掉,而段内的 <br> 也没有变成 <br />。所以说这次 bug 的修复很离奇,可能是由于触发了之后的一些代码,两两呼应直接把 bug 修复了。

但其实说不定是因为自己引入了一个复合式 bug 也说不定呢🤣

两个bug是互相弥补的,好比“负负得正”,软件反而能正常运行。这种bug可能才是最难发现的bug。当你修正了其中的一个bug,另一个bug才会暴露出来。这时对你来说,你会觉得刚才修正错了,因为那是你最后修改的地方,你就怀疑自己在那里做错了,但是你其实是对的。

(出自《黑客与画家》)

等之后琢磨透了说不定会有更好的解决方案,先这么留着吧ww

参考链接

bo'ke'yrwww.cnblogs.com/richerdyoun…