截取字符,中英混合无乱码。 一个汉字当作一个字符
来源:互联网 发布:wind开发数据接口 编辑:程序博客网 时间:2024/06/01 10:38
<?php //PHP中英文截取无乱码header('Content_type=text/php;charset=UTF-8');$str = '浙江zju大学';//关键在于判断往后截多少个字节上,这是这个函数的核心//此函数是用客串来判断的,效率不高//位运算效果会更好//110x xxxx && 1110 0000 -> 1100 0000//1110 xxxx && 1111 0000 -> 1110 0000//位运算时不受英文字符最高位为0的影响,只是在转成字符串才受到影响function utf8sub($str,$len){if($len<0){return '';}$res = '';$offset = 0;$chars = 0;$count = 0;$length = strlen($str);//待截取字符串的字节数while($chars<$len && $offset<$length){$high = decbin(ord(substr($str,$offset,1)));//先截取客串的一个字节,substr按字节进行截取//重要突破,已经能够判断高位字节if(strlen($high)<8){//英文字符ascii编码长度为7,通过长度小于8来判断$count = 1;// echo 'hello,I am in','<br>';}elseif (substr($high,0,3) == '110') {$count = 2;//取两个字节的长度}elseif (substr($high,0,4) == '1110') {$count = 3;//取三个字节的长度}elseif (substr($high,0,5) == '11110') {$count = 4;}elseif (substr($high,0,6) == '111110') {$count = 5;}elseif(substr($high,0,7)=='1111110'){$count = 6;}$res .= substr($str,$offset,$count);$chars +=1;$offset += $count;}return $res;}echo utf8sub($str,1),'<br>';echo utf8sub($str,10),'<br>';?>
0 0
- 截取字符,中英混合无乱码。 一个汉字当作一个字符
- php截取字符串,一个汉字按两个字符计算
- 从一个包含汉字和其他字符的字符串中截取指定字节长度的字符串,不可以出现中文乱码
- 如何解决 html 中多空格字符被当作一个空格字符处理的问题
- PHP截取中文字符无乱码 mb_substr()
- 一个截取字符的问题
- oracle截取最后一个字符
- oracle截取最后一个字符
- stringbuilder截取最后一个字符
- Lua string.sub截取UTF8 中英混合字符
- 中英文混合字符截取
- 一个汉字占几个字符
- C语言中截取一个字符,以空格为结束
- JAVA查询一个字符串中字符是不是有汉字
- C#中如何判断一个字符是汉字
- C#中如何判断一个字符是汉字
- C#中如何判断一个字符是汉字
- C#中如何判断一个字符是汉字
- [leetcode-131]Palindrome Partitioning(java)
- 【hdoj 4315】Climbing the Hill
- 软件系统演示脚本实践(草稿)
- 命令+mybatis-generator插件自动生成Mapper映射文件
- ubuntu rm 恢复
- 截取字符,中英混合无乱码。 一个汉字当作一个字符
- junit常用注解详细说明
- ESX5.1 安装Hyper v
- html中submit和button的区别(总结)
- 九度 Online Judge 算法 刷题 题目1018:统计同成绩学生人数
- PHP中XML-RPC使用笔记
- Swift:可选类型(Optional)
- 造轮子之商业下拉菜单
- 谈谈 React.js 的核心入门知识