这个计算字符串长度的函数的原理?

 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 的算法