strrchr返回包含分隔符的子串,如strrchr('filename.txt', '.')返回'.txt';用substr($suffix_with_dot, 1)可安全截取纯后缀,但需先判断返回值是否为false以避免警告。

要在PHP中用substr截取strrchr返回的后缀部分,必须先理解strrchr返回的是包含分隔符的子串,而substr默认从字符串开头计数——若直接对strrchr结果用substr($str, $pos),容易因忽略分隔符本身长度导致截断错误或越界。
明确strrchr返回值的结构
strrchr('filename.txt', '.') 返回 '.txt',不是 'txt';它总是包含分隔符本身。这是关键前提,【跳过这一步直接套用substr会截掉第一个字符】。
验证返回值:echo strrchr('image.png', '.'); → 输出 '.png'。
用substr截取纯后缀(不含点)
方法一:结合strlen和substr计算偏移量
第一步:获取strrchr结果 → $suffix_with_dot = strrchr('report.pdf', '.');
第二步:用substr从第1位开始截取 → $pure_suffix = substr($suffix_with_dot, 1);
这一步最简捷:substr($suffix_with_dot, 1) 直接跳过分隔符,取后面全部内容。注意索引从0开始,位置1就是第二个字符,刚好避开开头的点。
安全处理空返回或无分隔符情况
strrchr在找不到分隔符时返回false,此时对false调用substr会触发警告。必须提前判断:
$path = 'config';
$dot_part = strrchr($path, '.');
if ($dot_part !== false) {
$ext = substr($dot_part, 1);
} else {
$ext = '';
}
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











