找回typecho的段前空格——转
自从把 typecho 升级到0.8版后就一直纠结于一个不大不小的问题--吃空格,程序会把除了第一自然段以外的其它自然段前面的空格给吃掉,给排版照常困难。对于我这样有洁癖的人来说是不可容忍的。无图无真相。
自从把 typecho 升级到0.8版后就一直纠结于一个不大不小的问题--吃空格,程序会把除了第一自然段以外的其它自然段前面的空格给吃掉,给排版照常困难。对于我这样有洁癖的人来说是不可容忍的。无图无真相,看图。
修改方法:找到typecho\var\Typecho\Common里的Paragraph.php这个文件,把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;
}
private static function cutByBlock($text)
{
$space = "( | )";
$text = str_replace("\r\n", "<br />", trim($text));
$text = str_replace("\n", "<br />", 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;
}
修改完后的效果,看图
这个问题产生的原因在于\r和\n这两个的含义。\r是回车,\n是换行。\r\n才是回车换行。所以\r\n和\n这两个应该要分别处理,而不能只处理\n。
最后更新于 2011-06-09 12:59:47 并被添加「typecho」标签,已有 1432 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处