解决Typecho换编辑器后换行间距问题

因为我个人并不喜欢Markdown,于是我把Markdown解析关掉了,这样te在编辑文章或是页面的时候,编辑器就没了,只能手动敲html代码,很累,于是我装了UEditor,装完后用了下,觉得还不错,然而很快我就发现了一个问题,我只要一回车就会产生两个空行,观察代码,发现文章中多了个<p><br/></p>,手动删掉后正常了,其实之前用KindEditor的时候我也遇到过这个bug,但是当时我还没觉得很严重。。。因为KE的Br不会跟P一起出现。。。但是UE就出现了这个问题。。。。

既然找到原因了就去解决它,到网上搜了下,有两办法:

1.

打开文件,var/Typecho/Common/Paragraph.php

在 76 行,找到如下代码

    $text = nl2br($text);

将其注释掉:

    //$text = nl2br($text);

2.

var/Typecho/Common/Paragraph.php文件,在:

    $text = str_replace("\r\n", "\n", trim($text));

下加一行:

    $text = preg_replace("/()\n/", "\\1", $text);

然而,这两个办法都不行,因为现在的TE根本没有var/Typecho/Common/Paragraph.php文件。

瞥了一眼var/Typecho文件夹,突然发现了一个叫做AutoP.php的文件,将文件打开后,我发现这个文件就是引发问题的原因。。。尝试直接干掉这个文件,后台的确没有出现那个情况了,但是前台直接挂了,这样不行,再仔细看了看代码,emmmm,$text = nl2br($text);不就在这么,果断的注释掉,再次发文测试,再次出现此问题,懵掉了。

观察了这个文件,发现还有一行

    /** 用br处理换行 */
       case false !== strpos('|li|dd|dt|td|p|a|span|cite|strong|sup|sub|small|del|u|i|b|ins|h1|h2|h3|h4|h5|h6|', $tagMatch):
       $text = nl2br(trim($text)); 
       break;

把$text = nl2br(trim($text)); 注释掉,发文测试,没再出现这个情况。

  1. 后宫学长说道:
    然而这是百度编辑器的原因。 @(huaji)
  2. 后宫学长说道:
    然而这是百度编辑器的原因。 @(huaji)

发表评论

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