开发者社区> 问答> 正文

计算字符串长度的函数的原理的问题

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;的作用是什么?
为什么要这么做?

展开
收起
小旋风柴进 2016-03-06 10:37:07 1997 0
1 条回答
写回答
取消 提交回答
  • 这个函数只能用于 utf-8 环境(gbk 的第二个字节可能为 0x40~0x7e)
    这个函数是用来计算浏览器等宽字体占位的(一个汉字占2个西文位置)
    由于utf-8汉字由3个字节组成,所以就有了 除3乘2 的算法

    2019-07-17 18:54:13
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载