PHP 多字节处理函数 mb_strlen
2024-09-03 18:14:04
一、前言
个人认为,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类型.
最新文章
- Linux系统中Xampp+Bugfree安装
- C#遍历enum类型
- ForeignKey 的第二个位置参数on_delete
- Log4net Dll用法
- Java基础之处理事件——使窗口处理自己的事件(Skethcer 1 handing its own closing event)
- quartz 时间配置规则
- HW2.15
- runtime重写description方法打印model属性和值
- iOS中的下载管理器(支持断点续传)
- URL vs. HTML 录制模式
- .OpenWrt驱动程序Makefile的分析概述 、驱动程序代码参考、以及测试程序代码参考
- springMVC中@RequestParam和@RequestBody注解的用法
- angular4在prod模式下的JIT编译问题
- 在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?
- 03.Regression
- unsigned 变量名:n
- Django之ORM查询进阶
- BZOJ2178 圆的面积并(simpson积分)
- Problem A: 编写函数:三个数的最大最小值
- Javascript 中 null和undefined的区别
热门文章
- grep和管道
- ACM-单调队列
- log4j.dtd
- 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)
- Tomcat启动报Error listenerStart错误 | ";beans"; 必须匹配 DOCTYPE 根 ";null"; | java.lang.reflect.MalformedParameterizedTypeException
- ansible测试环境
- Ehcache的配置与使用
- VM(xp系统下用虚拟机安装win8 提示 :units specified don't exist, SHSUCDX can't install)解决方法
- prop &; attr
- 【2017-07-01】Linux应用开发工程师面试问题记录之二:关于结构体的大小及内存对齐问题