PHP截取字符串substr()函数用法详解
substr() 可以「截取」字符串。
语法
string substr( $str, start, length);
参数
- $str :被截取的字符串。
- start :开始截取的位置。
- length :截取的长度。
返回值
- 截取成功,就返回截取的字符串
- start 超过字符串长度,就返回 false
- start 和 length 设置成不合理的截取范围,就返回空字符串
一、截取字符串
1)字符串的「索引」从0开始,「空格」也算一个字符。
实例1:从左边第6个字符开始,往右截取4个字符。
echo substr('0123456789',6,4).PHP_EOL; echo substr('01234 6789',6,4);
输出:
6789
6789
2) start 和 length 可以为负数,负数就是相反的意思。
实例2:从右边第6个字符开始,往右截取4个字符。
echo substr('9876543210',-6,4);
输出:
5432
实例3:从左边第6个字符开始,截取到右边第3个字符。
echo substr('0123456789321',6,-3);
输出:
67893
实例4:从右边第6个字符开始,截取到右边第4个字符。
echo substr('9876543210',-6,-4);
输出:
54
二、截取中文字符串
「英文」字符占1个字节,UTF8编码的「中文」占3个字节,GB2321编码的中文占2个字节。
截取中文时,一个(UTF8编码)中文要当做3个字符串来截取, start 和 length 的值得是「3的倍数」,否则会截取到乱码。
实例:
echo substr('零一二三四五六七八九',0,3).PHP_EOL; echo substr('零一二三四五六七八九',3,3).PHP_EOL; echo substr('零一二三四五六七八九',3,1);
输出:
零
一
�
三、length的特殊值
1) length 可以省略,默认截取到字符串「末尾」。
实例:
echo substr('0123',1).PHP_EOL; echo substr('0123',-1);
输出:
123
3
2) length 为 0,null,false 时,表示截取 0 个字符, substr() 会返回空字符串。
实例:
var_dump(substr('0123',1,0)); var_dump(substr('0123',1,null)); var_dump(substr('0123',1,false));
输出:
string(0) ""
string(0) ""
string(0) ""
四、start的特殊值
1) start 超过字符串「长度」时,会返回false。
实例:
var_dump(substr('0123',11));
输出:
bool(false)
2) start 可以是数值型字符串,但内容必须是「纯数字」,否则会报错。
实例:
var_dump(substr('0123','0'));
输出:
string(4) "0123"
3) start 可以是「布尔类型」( true=1;false=0 )。
实例:
var_dump(substr('0123',true)); var_dump(substr('0123',false));
输出:
string(3) "123"
string(4) "0123"
4) start 包含运算符时,会先「运算」,再将运算结果「赋值」给 start 。
实例:
var_dump(substr('0123',1+1)); var_dump(substr('0123',1*2)); var_dump(substr('0123',~~2)); var_dump(substr('0123',1&1));
输出:
string(2) "23"
string(2) "23"
string(2) "23"
string(3) "123"
5) start 为十六进制时,会自动转换为0进制。
实例:11的十六进制是 0xB
var_dump(substr('0123456789abcde',0xB));
输出:
string(4) "bcde"
到此这篇关于PHP截取字符串substr()函数用法详解的文章就介绍到这了,更多相关PHP substr()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
PHP中file_put_contents追加和换行的实现方法
下面小编就为大家带来一篇PHP中file_put_contents追加和换行的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-04-04
最新评论