已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 教程

标题: PHP 截取中文不乱码函数!

作者: @Ta

时间: 2014-12-06

点击: 5786

<?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);

?>

[隐藏样式|查看源码]


『回复列表(10|隐藏机器人聊天)』

1. 花了我几个小时才搞出来
(/@Ta/2014-12-06 15:44//)

2. 花了我几个小时才搞出来
(/@Ta/2014-12-06 15:55//)

3. 楼主,你看看md_substr()
(/@Ta/2014-12-06 16:07//)

4. 看起来好牛逼的样子,真是可惜了
(/@Ta/2014-12-06 16:08//)

5. 没看懂。。。
(/@Ta/2014-12-06 16:50//)

6. 咦,我怎么把mb_substr打成md了。。。
(/@Ta/2014-12-06 18:19//)

7. @齐子,mdsb
(/@Ta/2014-12-06 18:24//)

8. @chao@齐子,楼主为毛不用 mb_substr
(/@Ta/2014-12-06 18:39//)

9. mb_substr
(/@Ta/2014-12-06 19:10//)

10. @齐子,我不知道mb_substr 这个函数!
(/@Ta/2014-12-06 19:45//)

回复需要登录

9月15日 23:46 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1