一、前言

个人认为,PHP是世界上最好的语言。 

二、介绍

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

例二:

 echo strlen('测试');

 //结果是 6

 echo mb_strlen('测试');

 //结果是 2

 echo mb_strlen('测试', '8bit');

 //结果是  6

从结果来看例子二, mb_strlen('测试', '8bit') == strlen('测试'), 可是为啥要用mb_strlen() 而不是用 strlen() 呢?

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

最新文章

  1. Linux系统中Xampp+Bugfree安装
  2. C#遍历enum类型
  3. ForeignKey 的第二个位置参数on_delete
  4. Log4net Dll用法
  5. Java基础之处理事件——使窗口处理自己的事件(Skethcer 1 handing its own closing event)
  6. quartz 时间配置规则
  7. HW2.15
  8. runtime重写description方法打印model属性和值
  9. iOS中的下载管理器(支持断点续传)
  10. URL vs. HTML 录制模式
  11. .OpenWrt驱动程序Makefile的分析概述 、驱动程序代码参考、以及测试程序代码参考
  12. springMVC中@RequestParam和@RequestBody注解的用法
  13. angular4在prod模式下的JIT编译问题
  14. 在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?
  15. 03.Regression
  16. unsigned 变量名:n
  17. Django之ORM查询进阶
  18. BZOJ2178 圆的面积并(simpson积分)
  19. Problem A: 编写函数:三个数的最大最小值
  20. Javascript 中 null和undefined的区别

热门文章

  1. grep和管道
  2. ACM-单调队列
  3. log4j.dtd
  4. 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)
  5. Tomcat启动报Error listenerStart错误 | "beans" 必须匹配 DOCTYPE 根 "null" | java.lang.reflect.MalformedParameterizedTypeException
  6. ansible测试环境
  7. Ehcache的配置与使用
  8. VM(xp系统下用虚拟机安装win8 提示 :units specified don't exist, SHSUCDX can't install)解决方法
  9. prop & attr
  10. 【2017-07-01】Linux应用开发工程师面试问题记录之二:关于结构体的大小及内存对齐问题