function str_len($str)
{
$length = strlen(preg_replace('/[\x00-\x7F]/', '', $str));
if ($length)
{
return strlen($str) - $length + intval($length / 3) * 2;
}
else
{
return strlen($str);
}
}
strlen(preg_replace('/[\x00-\x7F]/', '', $str));
这条语句的作用是什么?strlen($str) - $length + intval($length / 3) * 2;
后面这里 intval($length / 3) * 2;
的作用是什么?
为什么要这么做?
这个函数只能用于 utf-8 环境(gbk 的第二个字节可能为 0x40~0x7e)
这个函数是用来计算浏览器等宽字体占位的(一个汉字占2个西文位置)
由于utf-8汉字由3个字节组成,所以就有了 除3乘2 的算法
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。