</pre><pre name="code" class="php">$str = '中华人aaaa民共b和国,万c岁';
/*
$str 是待截取的字符串
$len 是截取的字符数
*/
function utf8sub($str,$len) {
if($len <= 0) {
return '';
}
$length = strlen($str); //待截取的字符串字节数
$offset = 0; // 这是截取高位字节时的偏移量
$count = 0;
$chars = 0; // 这是截取到的字符数
$res = ''; // 这是截取的字符串
while($chars < $len && $offset < $length) {
$high = ord(substr($str,$offset,1)); // 重要突破,已经能够判断高位字节
if(($high & 128 )<128) { //ascii 最大对应值
// 截取1个字节
$count = 1;
} else if(($high & 224 )==192){
// 截取2个字节
$count = 2;
} else if(($high & 240 )==224) {
// 截取3个字节
$count = 3;
} else if(($high & 248 )==240) {
// 截取4个字节
$count = 4;
} else if(($high & 252 )==248) {
// 截取5个字节
$count = 5;
} else if(($high & 255 )==252) {
// 截取6个字节
$count = 6;
}
$res .= substr($str,$offset,$count);
$chars += 1;
$offset += $count;
}
return $res;
}
echo utf8sub($str,5),'<br>';
php 截取utf8 无乱码
最新推荐文章于 2024-11-12 12:29:51 发布