PHP 多字节处理函数 mb_strlen

本文探讨了PHP中mb_strlen函数的使用方法及其与strlen函数的区别。通过具体实例对比,展示了mb_strlen处理多字节字符串时的优势,并解释了'8bit'参数的实际意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

个人认为,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

例二:

 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类型.

 

转载于:https://www.cnblogs.com/hellow-world/p/9178912.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值