中文截取无乱码的PHP方法
a target=_blank href=http://list.qq.com/cgi-bin/qf_invite?id=08f814f703c7b4139f32b06cc2f7c0c1fd1b46f032c64622 rel=nofollow/a a href=http://qita.in/bMv target=_blank rel=nofollowimg alt=填写您的邮件地址,订阅我们的精彩内容:
http://blog.ddian.cn/?post=837<?php
//$str 待截取的字符串
//$len 截取的字符个数
//$chars 已经截取的字符数
//$res 保存的字符串
//$chars 保存已经截取的字符串个数
//$offset 截取的偏移量
//$length 字符串的字节数
//若$len>$str的字符个数,造成无谓的while循环,($offset<$length限定)
function utf8sub($str,$len){
if($len<=0){
return ;
}
$res="";
$offset=0;
$chars=0;
$length=strlen($str);
while($chars<$len && $offset<$length){
$hign=decbin(ord(substr($str,$offset,1)));
if(strlen($hign)<8){
$count=1;
}elseif(substr($hign,0,3)=="110"){
$count=2;
}elseif(substr($hign,0,4)=="1110"){
$count=3;
}elseif(substr($hign,0,5)=="11110"){
$count=4;
}elseif(substr($hign,0,6)=="111110"){
$count=5;
}elseif(substr($hign,0,7)=="1111110"){
$count=6;
}
$res.=substr($str,$offset,$count);
$offset+=$count;
$chars+=1;
}
return $res;
}
function utf8sub1($str,$len){
$chars=0;
$res="";
$offset=0;
$length=strlen($str);
while($chars<$len && $offset<$length){
$hign=decbin(ord(substr($str,$offset,1)));
if(strlen($hign)<8){
$count=1;
}elseif($hign & "11100000"=="11000000"){
$count=2;
}elseif($hign & "11110000"=="11100000"){
$count=3;
}elseif($hign & "11111000"=="11110000"){
$count=4;
}elseif($hign & "11111100"=="11111000"){
$count=5;
}elseif($hign & "11111110"=="11111100"){
$count=6;
}
$res.=substr($str,$offset,$count);
$chars++;
$offset+=$count;
}
return $res;
}
$a="中华ah人民hdj";
echo utf8sub($a,5);
?>
- 上一篇:PHPmailer邮件群发系统程序代码
- 下一篇:PHP中英文断句无乱码
精彩图集
精彩文章






