巧用PHP正则表达式替换解决WP自动截断函数中文处理
问题描述
WP的自动截断函数the_excerpt()可以对文章输出内容进行自动截断. 但是这一截断效果对中文的处理不是很好, 导致有些中文文章的摘要明显长于英文文章. 原因就是中文的标点符号被当成了字符(就像汉字一样), 并不是WP默认的断句符号. 于是一个办法是所有的文章都使用英文标点, 问题基本就解决了. 但是, 我们时不时的转载别人的文章时, 还是会碰到使用的是中文标点的情形, 这样我们不妨写一个php函数对文章输出内容进行过滤:
具体代码如下, 请把它加到你模板的functions.php的最后(但是是在 ?> 之前哈 🙂 )
1 2 3 4 5 6 7 8 9 10 |
//replace the chinese character function ch2en_char($content) { $content = preg_replace('/。/ims', '. ', $content); $content = preg_replace('/,/ims', ', ', $content); $content = preg_replace('/“/ims', '"', $content); $content = preg_replace('/”/ims', '"', $content); $content = preg_replace('/:/ims', ': ', $content); return $content; } add_filter('the_content', 'ch2en_char',100); |
最后请确保保存代码格式为UTF8, 否则要转码. 例如你用Notepad++的话直接:格式->转为UTF8无BOM编码格式就行了.
再看看你的输出, 是不是长短都差不多了?
注意, 上述代码中介于/与/ims是中文标点符号, 由于我的网站已经替换, 所以你需要手动修改. 即把英文格式的标点换为中文格式的(注意有些替换还有空格也要去掉). 当然你也可以吧加到the_expert中, 这样子可能就不会对正文影响了.
本作品采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循署名-非商业用途-保持一致的创作共用协议.
发表回复