php函数mb_strimwidth是用来获取指定的宽度截断字符串。但在使用mb_strimwidth函数来实现文章截断的时候,如果结尾处恰巧是中文字符的话,有可能会发生乱码现象。今天在我单位的网站就发生了截断中文乱码问题。解决的方法如下。
第一种解决的方法:开启mb_string extension
如果您有权限更改apache配置,可以将mb_string extension设置为on。
第二种解决的方法:设置字符集
这里需要先说明下mb_strimwidth的使用方法
mb_strimwidth(string $str,int $start,int $width[,string $trimmarker[,string $encoding]])
参数说明:站长教学网 eduyo.com
$str //指定字符串
$start //指定从何处开始截取
$width //截取文字的宽度
$trimmarker //超过$width数字后显示的字符串
举个例子,我调用的php函数是这样的:
<?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 370, "...");?>
解决中文截断乱码问题只需将以上代码加上UTF-8参数即可:
<?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 370, "...",'utf-8');?>
这样就解决了WordPress中mb_strimwidth截断中文字符产生乱码的问题。
(责任编辑:ken)