首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
字符串的单引号和双引号
字符串的连接符
手动和自动转义字符串中的字符
计算字符串的长度
字符串单词统计
清理字符串中的空格
字符串的切分与组合
字符串子串的截取
字符串子串替换
字符串查找
字符串大小写转换
字符串处理机制的修改
正则表达式概述
正则表达式的语法规则
使用正则表达式替换字符串子串
使用正则表达式切分字符串
实战演练——酒店系统在线订房表
PHP数组概述
构造一维数组
构造多维数组
遍历数组
数组排序
字符串与数组的转换
向数组中添加和删除元素
查询数组中的指定元素
统计数组元素个数
删除数组中的重复元素
调换数组中的键值和元素值
PHP 8的新变化1—自动创建元素的顺序的改变
PHP 8的新变化2—list()函数修改数组的改变
PHP 8的新变化3—foreach()函数修改数组的改变
实战演练—序列化和反序列化
当前位置:
首页>>
技术小册>>
PHP8入门与项目实战(3)
小册名称:PHP8入门与项目实战(3)
计算字符串的长度经常在很多应用中出现,比如在输入框输入文字的长度就会用到此功能。使用strlen()函数就可以实现这个功能。 strlen()函数返回字符串所占的字节长度,一个英文字母、数字、各种符号均占一个字节,它们的长度均为1。一个中文字符占两个字节,所以一个中文字符的长度是2。以下实例介绍计算字符串长度的方法和技巧。 【例5.4】 ```php <?php echo strlen("http://www.php.net/"); echo "<br"; echo strlen("山际见来烟,竹中窥落日。"); ?> ``` 运行结果如图5-4所示。 ![](/uploads/images/20231207/a842eb2508e8ed93ccd460e32b2a34e9.png) 提示: 中文字符串“山际见来烟,竹中窥落日。”中明明是10个汉字和2个标点符号,为什么查询结果中的字符串的长度是36?原因是strlen()在计算时,对于一个UTF-8的中文字符,会把一个汉字的长度当作3个字节计算,所以“山际见来烟,竹中窥落日。”中总共有12个字符,长度为36。 当出现中英文混排的情况时,怎么准确地计算字符串的长度呢?这里需要使用另一个函数mb_strlen()。mb_strlen()函数的用法与strlen()几乎一模一样,只是多了一个指定字符集编码的参数。 mb_strlen()函数的语法格式如下: ```php int mb_strlen(string string_input, string encode); ``` PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。 下面的案例将准确计算出中文字符串的长度。 【例5.5】 ```php <?php echo strlen("山际见来烟,竹中窥落日。"); echo "<br/>"; echo mb_strlen("山际见来烟,竹中窥落日。","UTF8"); ?> ``` 运行结果如图5-5所示。 ![](/uploads/images/20231207/f857d155fbb4380ceb62ba19a94629f8.png) 【案例分析】 (1)strlen()计算时,对待UTF-8的中文字符长度是3,所以“山际见来烟,竹中窥落日。”的长度为12×3=36。 (2)mb_strlen()计算时,选定内码为UTF8,将一个中文字符当作长度1来计算,所以“山际见来烟,竹中窥落日。”长度为12×1=12。
上一篇:
手动和自动转义字符串中的字符
下一篇:
字符串单词统计
该分类下的相关小册推荐:
Laravel(10.x)从入门到精通(六)
Magento零基础到架构师(系统管理)
Yii2框架从入门到精通(上)
PHP合辑4-字符串函数
Laravel(10.x)从入门到精通(十一)
PHP底层原理及源码分析
HTTP权威指南
PHP高并发秒杀入门与实战
PHP8入门与项目实战(2)
Magento零基础到架构师(库存管理)
PHP安全之道
PHP合辑2-高级进阶