发表于 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的 中文 编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢