php计算中英文混合字符长度

发表于 2020-05-01 16:07:43 by月小升

有关
中文

的问题。PHP内置的
字符串

长度函数strlen无法正确处理
中文


字符串

,它得到的只是字符串所占的字节数。

<?php
 
$str='真正听得进去别人说话,其实是要';
//计算如下
echo '<meta charset="UTF-8">';
echo $str;
 
$lens = (strlen($str) + mb_strlen($str,'UTF8')) / 2;
 
echo '<hr>';
echo '标准算法长度:'.strlen($str);
 
echo '<hr>';
echo 'UTF8计算中文长度:'.mb_strlen($str,'UTF8');
 
echo '<hr>';
echo '正确的算法计算:'.$lens;
 
?>

浏览器返回信息

真正听得进去别人说话,其实是要
标准算法长度:45
UTF8计算中文长度:15
正确的算法计算:30

谈谈GB2312

对于GB2312的
中文

编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。

  • Java字符串的10大热点问题盘点
  • 13. java StringBuffer,StringBuilder,String自身连接效率对比
  • java拆分字符串split
  • java将汉字转成拼音
  • PHP删除所有中文字符
  • php参数过滤技巧
  • xbmc中文显示设置
  • 树莓派中文支持

首发地址:–

无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢

原文 

https://java-er.com/blog/php-len-utf-8-chinese-length/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » php计算中英文混合字符长度

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址