1、前言php
我的认为,PHP是世界上最好的语言。 yii2
2、介绍yii
查看yii2底层源码, 发现 mb_strlen($str, '8bit') , 此函数的不是PHP的核心函数, 因此须要开启对应的扩展. 函数第一个参数是string类型, 第二个参数是个编码字符集, 好比: utf-8, gbk, unicode 等. '8bit' 是属于什么字符集? 其实8bit是php独有解析的, 8bit并非一个字符集, 只是php引擎能够解析它而已. 顾名思义, 一个字节等于八个位, 1byte=8bit.函数
下面是几个例子:性能
例一:测试
echo strlen('测试'); //结果是 6
echo mb_strlen('测试'); //结果是 2
从结果来看, strlen里的多字节字符串一个汉字等于3个字节,而mb_strlen中的一个汉字是1个字节. 从而能够看出mb_strlen的默认编码字符集是utf-8编码
例二:spa
1 echo strlen('测试'); 2
3 //结果是 6
4
5 echo mb_strlen('测试'); 6
7 //结果是 2
8
9 echo mb_strlen('测试', '8bit'); 10
11 //结果是 6
从结果来看例子二, mb_strlen('测试', '8bit') == strlen('测试'), 但是为啥要用mb_strlen() 而不是用 strlen() 呢?code
查询资料发现, mb_strlen 比 strlen处理多字节字符串的性能更好, 也更加精确. 其次就是返回值的不一样了, mb_strlen 返回值是混合类型fix, 就是说有int也有boolean, 而strlen的返回值只是int类型.blog