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;的作用是什么?
为什么要这么做?
正则吧asicc字符都替掉
具体他这个长度要干嘛,我们就不得而知了,他乘100,乘1000,都是他自己的想法
正则表达式的方法 需要仔细看看那
gb2312编码下,汉字是两个字节,如果是utf8,是3个字节了,所以除以的是3。
这个函数只能用于 utf-8 环境(gbk 的第二个字节可能为 0x40~0x7e)
这个函数是用来计算浏览器等宽字体占位的(一个汉字占2个西文位置)
由于utf-8汉字由3个字节组成,所以就有了 除3乘2 的算法