大张小站

  1. @八角石

    欢迎关注我的新浪微博 @八角石 !

    [ 更多详情 ]

  2. 人生

    自歌自舞自开怀,且喜无拘无碍。

  3. 心境

    若得心净如明月,长空万里了无尘。

  4. 情渊

    他生莫做有情痴,人间无地著相思。

  • 1
  • 2
  • 3
  • 4
2,169

Discuz! X3.* 帖子正文排版优化:替换连续多余的空格和标点符号

分类 网站技术/村民张先生 发布于 2015-03-13 11:13
0

若我们需要在用户浏览页面时自动替换帖子内容中指定中文字符(包括中文标点符号),可以进行以下修改:

打开 source/function/function_discuzcode.php 文件,查找

if(!$bbcodeoff && $allowbbcode) {

在其上方新增以下代码:

	$message = mb_convert_encoding($message,'UTF-8','GBK'); //先将帖子内容全部转换为UTF-8编码
	$message = trim($message); //去掉头尾空格
	$quanjiaokongge = mb_convert_encoding(' ','UTF-8','GBK'); //转换全角空格为UTF-8编码
	$juhao = mb_convert_encoding('。','UTF-8','GBK'); //转换中文句号为UTF-8编码
	$shenglvehao = mb_convert_encoding('……','UTF-8','GBK'); //转换省略号为UTF-8编码
	$douhao = mb_convert_encoding(',','UTF-8','GBK'); //转换中文逗号为UTF-8编码
	$message = preg_replace(array('/\r\n[ ]+/', '/\r\n\t+/', '/(\r\n){3,}/', '/[ ]{2,}/', '/('.$juhao.'){3,}/', '/('.$juhao.'){2}/', '/('.$douhao.'){2,}/'), array("\r\n\r\n", "\r\n\r\n", "\r\n\r\n", ' ', $shenglvehao, $juhao, $douhao), mb_eregi_replace($quanjiaokongge," ",$message)); //将全角空格替换为半角空格、当行首存在空格/TAB时删除空格/TAB并增加一个空行(以空行分段,减轻阅读疲劳感)、当连续空行高于2行时调整为空1行、将多个连续空格替换为一个空格、当存在两个连续的中文句号时只保留一个句号、当存在三个以上连续的中文句号时替换为省略号、当存在两个以上连续的中文逗号时只保留一个逗号。
	$message = mb_convert_encoding($message,'GBK','UTF-8'); //将替换后的内容转换回GBK编码

若要强制某些版块中的帖子以空行分段(两个自然段间没有空行时自动插入一个空行,减少视觉疲劳,建议在长文章为主的版块中开启),可在以上代码倒数第二行前加入:

	if(in_array($_G[fid], array(版块1,版块2))) {
		$message = mb_eregi_replace('\r\n', "\r\n\r\n", $message);
	}

你可以根据以上代码自行调整。

欢迎转载分享,转载请注明 来源:大张小站 https://www.vdazhang.com/wenzhang-1326.html
若您喜欢这篇文章,欢迎订阅大张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截