码迷,mamicode.com
首页 > Web开发 > 详细

php mb_strlen

时间:2018-06-13 18:06:03      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:yii   字节   资料   style   strong   不同   pre   utf-8   echo   

 查看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

例二:

 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() 呢?

查询资料发现, mb_strlen 比 strlen处理多字节字符串的性能更好, 也更加精确. 其次就是返回值的不同了, mb_strlen 返回值是混合类型fix, 就是说有int也有boolean, 而strlen的返回值只是int类型.

 

php mb_strlen

标签:yii   字节   资料   style   strong   不同   pre   utf-8   echo   

原文地址:https://www.cnblogs.com/hellow-world/p/9178912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!