substr是PHP内置字符串截取函数,语法为substr(string,start,length),支持正负索引定位起始位置和可选长度控制截取范围,PHP 7.4中完全兼容早期版本,但处理中文等多字节字符时需改用mb_substr避免乱码。

`substr()` 在 PHP 7.4 中用法完全兼容早期版本,语法稳定、行为明确,是处理字符串截取最常用的基础函数。
基本语法与参数含义
函数签名:substr(string $string, int $start, ?int $length = null): string
- $string:要操作的原始字符串(必需)
- $start:起始位置(必需),从 0 开始计数;正数从头算,负数从尾倒数(如 -1 是最后一个字符)
- $length:可选,指定截取长度;省略则取到末尾;正数表示取多少个字符;负数表示从末尾去掉对应数量的字符
常见用法场景
从开头取前 N 个字符
-
substr("Hello World", 0, 5)→ "Hello" -
substr("PHP74", 0, 3)→ "PHP"
从末尾取后缀(如扩展名)
-
substr("report.pdf", -4)→ ".pdf" -
substr("image.jpeg", -3)→ "peg"(注意:-3 是倒数第 3 个起,不是扩展名逻辑,需按实际长度判断)
截取中间一段(指定起点 + 长度)
-
substr("abcdef", 2, 3)→ "cde"(索引 2 是 'c',取 3 位) -
substr("2024-11-03", 5, 2)→ "11"(提取月份)
用负长度排除末尾字符
-
substr("hello!", 0, -1)→ "hello"(去掉最后 1 个) -
substr("abcde", 1, -2)→ "bc"(从索引 1 开始,去掉末尾 2 个)
使用注意事项(PHP 7.4 特别提醒)
- 参数 $length 在 PHP 7.4 中已支持
null,等同于不传,写法substr($s, 2, null)合法 - 若 $start 超出字符串长度(如对 5 字符串设 $start=10),返回空字符串
"",不会报错或警告 - 若 $start 为负且绝对值大于字符串长度(如
substr("a", -5)),也返回空字符串 -
中文等多字节字符慎用 substr:它按字节截取,UTF-8 中一个汉字占 3 字节,直接截可能产生乱码;应改用
mb_substr($str, $start, $length, 'UTF-8')
中文截取示例(避免乱码)
错误写法(可能导致乱码):
-
substr("你好世界", 0, 2)→ 可能输出 ""(只取前 2 字节,非完整汉字)
正确写法(推荐):
-
mb_substr("你好世界", 0, 2, 'UTF-8')→ "你好" - 确保已启用
mbstring扩展(PHP 7.4 默认通常开启)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











