PHP 多字节处理函数 mb_strlen
一、前言
个人认为,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类型.
PHP 多字节处理函数 mb_strlen的更多相关文章
- PHP 多字节字符串 函数
		
参考资料 多字节字符编码方案和他们相关的问题相当复杂,超越了本文档的范围. 关于这些话题的更多信息请参考以下 URL 和其他资源. Unicode materials » http://www.uni ...
 - PHP中英文字符串截取函数无乱码(mb_substr)和获取中英文字符串字数函数(mb_strlen)
		
mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encod ...
 - [51单片机] EEPROM 24c02 [读取存储多字节]
		
先将数据存进去,然后再读出来显示在数码管上. 除了代码里定义的连线外还要把p0连接到8位数码管的8针上. /*--------------------------------------------- ...
 - C/C++常用头文件及函数汇总
		
转自: C/C++常用头文件及函数汇总 C/C++头文件一览 C #include <assert.h> //设定插入点#include <ctype.h> //字符处理#in ...
 - php课程 6-24 字符串函数有哪些(复习)
		
php课程 6-24 字符串函数有哪些(复习) 一.总结 一句话总结: 二.php课程 6-24 字符串函数有哪些(复习) 上次复习:--------------------------------- ...
 - php课程 6-22 字符串格式化函数有哪些(精问)
		
php课程 6-22 字符串格式化函数有哪些(精问) 一.总结 一句话总结: 1.猜测一下$_GET()怎么来的? 函数赋值给变量的操作:$_YZM=get(); 这样就可以很好的解释哪些全局变量 ...
 - MFC unicode字符集与多字节字符集 问题之彻底终结!
		
Unicode 和多字节字符集 (MBCS) 支持 Visual Studio .NET 2003 有些国际市场以大字符集来使用日文和中文等语言.为了支持这些市场的编程,Microsoft 基础类 ...
 - PHP最佳实践(译)
		
原文: PHP Best Practices-A short, practical guide for common and confusing PHP tasks 译者:youngsterxyf 最 ...
 - PHP文本处理之中文汉字字符串转换为数组
		
在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen - 获取字符串的长度 mb_sub ...
 
随机推荐
- Linux访问https报错
			
今天用Linux(CentOS)拉Git仓库时,报了个错unable to access 'https://github.com/Wind4/vlmcsd.git/': SSL connect err ...
 - js删除数组里指定的元素
			
js删除数组里指定的元素 首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为: Array.prototype.indexOf = function(val) { ...
 - linux 查看防火墙状态
			
1.查看防火墙状态 systemctl status firewalld firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running) 2 ...
 - Homebrew 安装及更新软件
			
brew brew install 安装 brew uninstall 卸载 brew update 更新 homebrew brew upgrade 安装已更新软件 brew cleanup 清理 ...
 - Github站点搭建 gh-pages
			
首先:把完整代码放在 gh-pages 分支上,设置 gh-pages 为默认分支(习惯性设置,也可以不设置). 网址: http://你的github域名.github.io/项目入口文件夹/ 本宝 ...
 - iOS - 通过view查找所在(viewController)
			
- (UIViewController *)findViewController:(UIView *)sourceView { id target=sourceView; while (target) ...
 - [Maven]Eclipse集成遇到的问题
			
当maven项目导入到eclipse中后使用eclipse提供的maven命令执行任意一个出现 Exception in thread "main" java.lang.Unsup ...
 - $("#Upfile").MultiFile();
			
Jquery的multifile 1.多文件上传: 2.如上几个验证不重复,和限制上传数量的验证显示的是英文,改成中文文本时,如果不用国标解码,到时候提示框会出现乱码现象.所以一般需要中文显示的时候, ...
 - simotion ST编程,变量和程序的模块化
			
通过这几年的实践,对simotion的程序结构规划有了一些新的理解.工程师在面对项目时,经常有几个问题比较困惑. 目前面对的问题 1)如何理解其他人编写的程序 2)如何从程序中找到可以移植的部分 传统 ...
 - Vue--父组件传数据给子组件,子组件生命周期过程拿到数据的情况
			
需求: 在子组件渲染之前,我要修改数据的某个字段 结果是 组件在beforeUpdate,updated 的状态才能拿到父组件的数据 那么证明,我根本无法在beforeUpdate,updated两个 ...