PHP实现字符串截断不乱码
原创 52cxy 03-26 09:46 阅读数:99

使用substr截断字符时,如字符串中同时含中英文,可能会出现乱码的情况,下面分享一个不会出现乱码的方法:

//从字符串开头开始截取指定长度的子串
//一个英文字符算0.5个长度
//一个汉字算1个长序
function getSubStr($str, $len){
	$tmpstr = "";
	$getCount = 0;
	$maxLen = strlen($str);
	for($i=0;$i<$maxLen;$i++){
		if(ord($str[$i]) >= 224){
			$getCount++;
			if($getCount>$len) break;
			$tmpstr .= substr($str, $i, 3);
			$i++;$i++;
		}
		elseif(ord($str[$i]) >= 192){
			$getCount++;
			if($getCount>$len) break;
			$tmpstr .= substr($str, $i, 2);
			$i++;
		}
		else{
			$tmpstr .= substr($str, $i, 1);
			$getCount += 0.5;
		}
		if($getCount>=$len) break;
	}
	return $tmpstr;
}


共0条评论
我要评论