前段时间在弄Kindeditor4.0.5的时候发现了个小问题,就是在后台编辑文章的时候插入代码之后"pre"标签会另起一行(在源代码模式下查看的),下面是一张截图:
然后插入到typecho的表中,前台输出多一个br标签导致总是空一大截。
根据我搜索和查看源码终于找到了问题所在,在使用pre标签另起一行,等于插入了个"\n"换行符,而根据typecho源码中"/build/var/Typecho/Common/Paragraph.php"文件中的源码中的nl2br函数,所以导致如上的问题。
解决方法就是下面的代码了:
/**
* 用段落方法处理换行
*
* @access private
* @param string $text
* @return string
*/
private static function cutByBlock($text)
{
$space = "( | )";
$text = str_replace("\r\n", "\n", trim($text));
$text = preg_replace("/{$space}*\n{$space}*/is", "\n", $text);
$text = preg_replace("/\n{2,}/", "</p><p>", $text);
//$text = nl2br($text);
$text = preg_replace("/(<p>)?\s*<p:([0-9]{4})\/>\s*(<\/p>)?/s", "<p:\\2/>", $text);
$text = preg_replace("/<p>{$space}*<\/p>/is", '', $text);
return $text;
}
将$text = nl2br($text);
这句注释掉就可以了,不过具体可能出现一些问题,这个我暂时没有发现,如果有朋友发现了可以留言给我。
其次建议使用我发的kindeditor插件,可以在后台设置使用p标签来还行。
转载请注明: 本文《typecho中的nl2br》来源于bstaint的博客
没有评论:
发表评论