由于网站首页以及vTigerCRM里经常在截取中文字符串时出现乱码(使用substr),今天找到一个比较好的截取中文字符串方法,在此与大家共享。
function msubstr($str, $start, $len) {
$tmpstr = "";
$strlen = $start + $len;
for($i = 0; $i < $strlen; $i++) {
if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $i, 2);
$i++;
} else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
更新:可以采用epaulin的建议,使用mb_substr方法替换上面的方法,效率应该会高一些,特别是从中间位置截取utf8多字节的字符串时,但有一个前提是php需激活mb_string,注意internal coding.
转载请注明:易客CRM官方博客 » PHP截取中文字符串方法
mb_substr
PHP 4.0.6 开始就支持多字节的截取,
encoding 用 GB2312 即可,只是大多数虚拟主机默认没有打开这个扩展。
epaulin