php在做文档处理的时候经常需要对字符串进行截取,一般英文字母或数字很好操作,但是如果遇到中文那么很有可能就会乱码了,
下面的方法可以截取字符串的指定长度,不论英文、数字、汉字都可以,
function sev_cnsubstr($str,$len) { if(function_exists("mb_substr")){ return mb_substr($str,0,$len,'utf-8'); } $res = array(); for($i = 0; $i < strlen($str); $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $res[]= substr($str, $i, 3);//utf-8 -> 3,gbk -> 2 $i+=2; }else{ $res[]= substr($str, $i, 1); } if(count($res)>=$len){ break; } } return implode("",$res); }
其中utf-8编码下一个汉字的长度是3,gbk编码下一个汉字的长度是2,根据自己的需要做些修改