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,根据自己的需要做些修改