PHP 7.4 中 substr() 支持负 offset,如 substr('hello world', -3) 返回 'rld';substr('PHP7.4', -2) 返回 '.4',取 '7.4' 应用 substr('PHP7.4', -3);负 offset 自动安全截取,不越界。

PHP 7.4 中 substr() 支持用负数作为 $offset 参数,直接从字符串末尾开始截取,非常方便。
用负数 offset 截取最后 N 个字符
语法:substr($string, -$n),其中 $n 是你想取的字符个数。
-
substr('hello world', -3)→ 'rld'(取最后 3 个) -
substr('PHP7.4', -2)→ '7.4'?不对,实际是 '.4'(注意:'PHP7.4'长度为 6,-2 表示从倒数第 2 位起,即第 5 位开始,到结尾 →.4) - 想取
'7.4',应写substr('PHP7.4', -3)
配合 length 参数精确控制(可选)
如果只要最后几个,但担心字符串太短导致越界,可以加第三个参数 $length,不过通常不必要——负 offset 本身已安全:
-
substr('abc', -5)→ 'abc'(自动截取全部,不会报错) -
substr('abc', -5, 3)→ 还是 'abc'(长度不足时,按实际可用长度返回)
常见误区提醒
负数 offset 是从 末尾往前数位置,不是“去掉前 N 个”:
立即学习“PHP免费学习笔记(深入)”;
-
substr($s, -2)≠substr($s, 0, -2) - 前者:取最后 2 个;后者:取除最后 2 个以外的部分(PHP 也支持负 length!)
- 例如:
substr('hello', 0, -2)→ 'hel'
不复杂但容易忽略:负 offset 的值必须是整数,且推荐用变量时先确保非空、是数字,避免意外结果。



















