博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php自定义截取中文字符串-utf8版
阅读量:4958 次
发布时间:2019-06-12

本文共 1470 字,大约阅读时间需要 4 分钟。

php自定义截取中文字符串-utf8版

UTF-8的编码范围(utf-8使用1-6个字节编码字符,实际上只使用了1-4字节):

1个字节:00——7F2个字节:C080——DFBF3个字符:E08080——EFBFBF4个字符:F0808080——F7BFBFBF
$str = 'abcd我是中国人';echo strlen($str), '
';echo mstrlen($str), '
';echo msubstr($str, 3, 9);/** * 统计utf8下字符串长度 */function mstrlen($str) { $len = 0; $i = 0; $slen = strlen($str); while ($i < $slen) { $o = ord($str[$i]); if ($o < 127) { $i++; } elseif ($o < 224) { $i+=2; } else { $i+=3; } $len++; } return $len;}/** * 截取utf8编码下的字符串 */function msubstr($str, $start, $length) { $len = mstrlen($str); if($start < 0) { $start += $len; if($start < 0) { $start = 0; } } $slen = strlen($str); $index = 0; for ($i = 0; $i<$start && $i<$slen; $i++) { $o = ord($str[$index]); if ($o < 127) { $index++; }elseif ($o < 224) { $index+=2; } else { $index +=3; } } $length+=$index; $newStr = ''; for ($i = $index; $i < $length && $i<$slen; $i++) { $o = ord($str[$i]); if ($o < 127) { $newStr .= $str[$i]; } elseif ($o < 224) { $newStr .= substr($str, $i, 2); $i+=1; $length++; } else { $newStr .= substr($str, $i, 3); $i+=2; $length+=2; } } return $newStr;}

  

 

转载于:https://www.cnblogs.com/zw2582/p/6473666.html

你可能感兴趣的文章
Windows10下安装Oracle 11g 64位的详细步骤
查看>>
自增运算符:++ 自减运算符:--
查看>>
142. Linked List Cycle II
查看>>
winForm单击用户区可移动窗体,代码控制窗体最大适中
查看>>
linux源
查看>>
配置tomcat服务器时遇到的奇怪现象
查看>>
ftp>ls 未连接
查看>>
【NOIP2016提高A组模拟9.9】运输妹子
查看>>
NOIP2016提高A组五校联考4总结
查看>>
设计移动web
查看>>
[00030]-[2015-09-26]-[00]-[DLL注入应用案例---修改任务管理器的实现]
查看>>
3ds的fbi无线传输
查看>>
Windows下ADT环境搭建
查看>>
[luogu4037 JSOI2008] 魔兽地图 (树形dp)
查看>>
不重新编译DLL,让FCKEditor支持附件上传
查看>>
redux middleware 源码分析
查看>>
CPS_数据预处理_每日记录
查看>>
sql 查询最近30分钟或者自定义时间数据
查看>>
冲刺周期一--站立会议02
查看>>
mysql数据库插入year时
查看>>