国内常见的博客网站,wordpress积分商城插件,网站建设协议一百互联,金坛网站建设「作者主页」#xff1a;士别三日wyx 「作者简介」#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 substr 一、截取字符串二、截取中文字符串三、leng… 「作者主页」士别三日wyx 「作者简介」CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 substr 一、截取字符串二、截取中文字符串三、length的特殊值四、start的特殊值 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
67892 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
32 length 为 0nullfalse 时表示截取 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) 01233 start 可以是「布尔类型」 true1false0 。
实例
var_dump(substr(0123,true));
var_dump(substr(0123,false));输出
string(3) 123
string(4) 01234 start 包含运算符时会先「运算」再将运算结果「赋值」给 start 。
实例
var_dump(substr(0123,11));
var_dump(substr(0123,1*2));
var_dump(substr(0123,~~2));
var_dump(substr(0123,11));输出
string(2) 23
string(2) 23
string(2) 23
string(3) 1235 start 为十六进制时会自动转换为0进制。
实例11的十六进制是 0xB
var_dump(substr(0123456789abcde,0xB));输出
string(4) bcde