首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
字符串的单引号和双引号
字符串的连接符
手动和自动转义字符串中的字符
计算字符串的长度
字符串单词统计
清理字符串中的空格
字符串的切分与组合
字符串子串的截取
字符串子串替换
字符串查找
字符串大小写转换
字符串处理机制的修改
正则表达式概述
正则表达式的语法规则
使用正则表达式替换字符串子串
使用正则表达式切分字符串
实战演练——酒店系统在线订房表
PHP数组概述
构造一维数组
构造多维数组
遍历数组
数组排序
字符串与数组的转换
向数组中添加和删除元素
查询数组中的指定元素
统计数组元素个数
删除数组中的重复元素
调换数组中的键值和元素值
PHP 8的新变化1—自动创建元素的顺序的改变
PHP 8的新变化2—list()函数修改数组的改变
PHP 8的新变化3—foreach()函数修改数组的改变
实战演练—序列化和反序列化
当前位置:
首页>>
技术小册>>
PHP8入门与项目实战(3)
小册名称:PHP8入门与项目实战(3)
在一个字符串中截取一个子串就是字符串截取。 完成这个操作需要用到substr()函数。这个函数有3个参数,分别规定了目标字符串、起始位置和截取长度。它的格式如下: ```php substr(目标字符串,起始位置,截取长度) ``` 其中,目标字符串是某个字符串变量的变量名,起始位置和截取长度都是整数。 如果都是正数,起始位置的整数必须小于截取长度的整数,否则函数返回值为假。 如果截取长度为负数,则意味着是从起始位置开始往后、除去从目标字符串结尾算起的长度数的字符以外的所有字符。 以下实例介绍字符串截取的方法和技巧。 【例5.9】 ```php <?php $aa = "create a substring of this string."; //定义字符串变量$aa $bb = "创建一个这个字符串的子串。"; echo substr($aa,0,11)."<br/>"; //截取字符串前11个字符 echo substr($aa,1,15)."<br/>"; //截取从第二个字符开始的前15个字符 echo substr($aa,0,-2)."<br/>"; //截取除最右侧两个字符外的字符 echo substr($bb,0,12)."<br/>"; //截取字符串前12个字符 echo substr($bb,0,9)."<br/>"; //截取字符串前9个字符 echo substr($bb,0,11); //截取字符串前11个字符 ?> ``` 运行结果如图5-9所示。 ![](/uploads/images/20231207/7212d0d8cdae201c188f121f6a45979a.png) 【案例分析】 (1)$aa为英文字符串变量。substr($aa,0,11)和substr($aa,1,15)展示了起始位和截取长度。substr($aa,0,-2)则是从字符串开头算起,除了最后两个字符外,其他字符都截取的子字符串。 (2)$bb为中文字符串变量。因为UTF-8的中文字符长度是3,所以截取12和9的长度都比较正常。当截取长度为11时,不是3的倍数,此时将会出现问题。所以,要小心使用。 从上述案例可以看出,当字符串中有中文字符时,截取字符串时尽量不使用substr()函数。那么应该如何操作?这里建议使用mbstring扩展库的mb_substr()函数,可以解决上述问题。 提示 一般来说,服务器默认没打开php_mbstring.dll,需要在php.ini中把php_mbstring.dll打开。 mb_substr()函数的使用方法和substr()函数类似,只是在参数中多加入一个设置字符串编码的参数。 【例5.10】 ```php <?php $aa = "时间会刺破青春表面的彩饰"; echo mb_substr($aa,0,11,"utf-8")."<br/>"; //截取字符串前11个汉字 echo mb_substr($aa,1,8,"utf-8")."<br/>"; //截取从第二个字符开始的前8个汉字 echo mb_substr($aa,0,-2,"utf-8"); //截取除最右侧两个字符外的汉字 ?> ``` 运行结果如图5-10所示。指定了UTF-8编码后,一个汉字的长度就是1。 ![](/uploads/images/20231207/369223c0638e0d5e1816e0e79f274abd.png)
上一篇:
字符串的切分与组合
下一篇:
字符串子串替换
该分类下的相关小册推荐:
PHP合辑2-高级进阶
PHP8入门与项目实战(6)
PHP8入门与项目实战(7)
HTTP权威指南
PHP程序员面试算法宝典
Laravel(10.x)从入门到精通(九)
Workerman高性能框架-GatewayWorker
Laravel(10.x)从入门到精通(十七)
Magento中文全栈二次开发
Magento零基础到架构师(内容设计)
Laravel(10.x)从入门到精通(五)
PHP8入门与项目实战(8)