php的ord函数??解决中文字符截断问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php的ord函数??解决中文字符截断问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2367字,纯文字阅读大概需要4分钟。
内容图文
函数是这样定义的:int ord ( string$string)
返回字符串 string 第一个字符的 ASCII 码值。
该函数是chr()的互补函数。
试一下:
echo ord('我');这里只能返回230, 我是以u8保存的文件并输出的, 它得到的只有230, 而230转换成hex是e6,实际上utf-8中我的编码是e68891, 它只拿到了第一个字节
echo chr(0xe6).chr(0x88).chr(0x91);
这个例子可以在utf-8的情况下输出”我“这个汉字
如果大家想了解字符编码的问题可以点这里字符编码
如果大家想查看一个汉字的gbk,utf-8,unicode各种编码方式推荐大家用Notepad++下的HEX-editor点击这里下载:
http://pan.baidu.com/s/1hquyJwo
长这样子
提高逼格:
身为一个程序猿,除了是苦逼的代名词外,还是神秘的象征,偶尔装XX还是不错的。既然说到编码,
那我们就说说属于你的字吧,在utf-8编码的世界里,可不是每个人都能找到属于自己的那款哦,
‘我’的编码是三字节,分别为e6、88、91,如果把你的生日放进去能编出啥字呢,想想是不是还有点小激动,
例如你是1988-9-4出生,那对应的属于自己的三字节为e9、88、94,anyway这个方法你也可以自己点,
爆个料,按照此方法,我的字是‘釉’,好字啊,you you 切克闹。
按照此法为啥不是每个人都有呢,那自己读下utf-8的二进制存储规则就知道了,
哈哈,还是点这里字符编码
扯了一堆没用的,其实就是希望大家发现编码的乐趣
自己动手:
很久以前是没有mb_substr函数的,因此带汉字的字符串截断操作处理起来很麻烦,不过现在可以直接用它。
既然我们对字符编码和ord函数有了很好的了解,自己就写个针对utf-8编码的字符串截断的函数吧。
代码很戳,有待优化,但理解起来简单,贴过去可以运行,基本场景也考虑到了,还算欣慰;
127){ //非ascii码时 if($cnt >= $start){ //如果计数器走到了$start的位置 $res .=$str[$i].$str[++$i].$str[++$i]; //utf-8是三字节编码,$i指针连走三下,把字符存起来 $t ++; //计数器++,表示我存了几个字符串了到$num的数量就退出了 }else{ $i++; //如果没走到$start的位置,那就只走$i指针,字符不用处理 $i++; } $cnt ++; }else{ if($cnt >= $start){ //acsii码正常处理就好 $res .=$str[$i]; $t++; } $cnt ++; } if($num == $t) break; //ok,我要截取的数量已经够了,我不贪婪,我退出了 } return $res; } var_dump(utf8_substr($a, 3, 10)); //结果应该是你想要的?>
内容总结
以上是互联网集市为您收集整理的php的ord函数??解决中文字符截断问题全部内容,希望文章能够帮你解决php的ord函数??解决中文字符截断问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。