在 PHP 7.4 中,substr() 省略长度参数即可截取到字符串末尾;正数起始位从头计,负数从尾计;越界返回空字符串;含中文时应使用 mb_substr 并指定 UTF-8 编码。

在 PHP 7.4 中,用 substr() 从指定位置截取到字符串末尾,只需传入起始位置,省略长度参数即可。
基本用法:只给起始位置
substr($string, $start) 默认截取从 $start 到字符串末尾的所有字符。正数起始位置从开头算(0 起始),负数则从末尾倒数。
-
substr("hello world", 6)→ "world"(从索引 6 开始) -
substr("hello world", -5)→ "world"(从倒数第 5 个字符开始) -
substr("PHP is great", 4)→ " is great"(含空格)
注意边界情况
如果起始位置超出字符串长度(比如 strlen($s) + 1),substr() 返回空字符串 "";如果是负数且绝对值大于字符串长度,也返回空字符串。
-
substr("abc", 10)→ "" -
substr("abc", -10)→ "" -
substr("abc", 3)→ ""(索引 3 已越界,长度为 3,最大合法索引是 2)
和 mb_substr 配合处理中文
如果字符串含中文或 UTF-8 多字节字符,直接用 substr() 可能截断乱码。此时应改用 mb_substr($string, $start, null, 'UTF-8'),第三个参数设为 null 表示“到末尾”。
立即学习“PHP免费学习笔记(深入)”;
-
mb_substr("你好世界", 2, null, 'UTF-8')→ "世界" - 不指定编码时默认使用
mb_internal_encoding()的值,建议显式传入'UTF-8'
替代写法(不推荐但可行)
也可用 substr($string, $start, strlen($string) - $start) 显式计算长度,但没必要——省略长度参数更简洁、安全、可读性强。



















