PHP 截取中文不乱码函数!
<?php
function jiequ($str,$len){
/**
* 1110 0110
* & 1111 1100 1110 0100
* & 1111 1000 1110 0000
* & 1111 0000 1110 0000
* & 1110 0000 1110 0000
* ......
*/
$length=strlen($str);
$restr='';
$sum=0;
while ($i<$len && $i<$length){
$decimal=ord((substr($str,$sum,1)));
//echo $decimal.'<br />';
if($decimal<128){
$num=1;
}else if(($decimal & 252)==252){
// 252 binary 1111 1100
$num=6;
}else if(($decimal & 248)==248){
// 248 binary 1111 1000
$num=5;
}else if(($decimal & 240)==240){
//240 binary 1111 0000
$num=4;
}else if(($decimal & 224)==224){
// 224 binary 1110 0000
$num=3;
}else if(($decimal & 192)==192){
// 192 binary 1100 0000
$num=2;
}
//echo $num.'<br />';
$restr.=substr ($str,$sum,$num);
$sum+=$num;
$i++;
}
return $restr;
}
echo jiequ('测试asdggd hh',100);
?>