PHP substr 截取中文乱码的解决方法

文章页面的 description 是使用 substr 函数来截取220字符的,但是最后一个汉字总是乱码,而且截取出来的长度也不正确。

通过神奇的 Google 找到方法,可能是因为 substr(string,start,length),会将汉字以字符的形式截断,而造成乱码

解决方案:使用 PHP 扩展库中的 mb_substr 方法。

方法定义:
string mb_substr ( string str, int start [, int length [, string encoding]] )

注意:在使用 mb_substr()/mb_strcut 最后要加入多一个参数,以设定字符串的编码,

例如:
echo mb_substr(‘原本会出现乱码的汉字!’, 0, 7, ‘utf-8′);

再如:
$description = mb_substr(strip_tags($post->post_content),0,220,’utf-8’);