要准确提取文件扩展名,必须用pathinfo配合pathinfo_extension参数;basename先剥离路径防干扰,pathinfo提取扩展名,trim清理空白字符。

要从带路径的完整文件名中准确提取扩展名(即最后一个点之后的部分),必须用pathinfo配合PATHINFO_EXTENSION参数,否则可能误取中间点或目录名中的点。
用pathinfo获取文件扩展名
调用pathinfo函数,传入文件路径字符串和PATHINFO_EXTENSION常量。
这一步操作起来很简单,直接把文件路径传进去就行:pathinfo('/var/www/html/index.php', PATHINFO_EXTENSION) → 返回php。
注意:如果路径末尾有斜杠(如/var/www/html/),pathinfo会返回空字符串,不是报错——这是正常行为,但容易被当成失败。
处理多级扩展名或隐藏文件
pathinfo只认最后一个点,对archive.tar.gz返回gz,对.gitignore返回gitignore(开头的点被忽略)。
若需获取.tar.gz这类复合扩展名,不能依赖pathinfo,必须手动截取最后一段点分隔符后的全部内容,或用正则匹配\.[^.]+$。
【关键前提】 pathinfo解析的是字符串,不检查文件是否存在,也不验证路径合法性——传入../../config.php.bak照样返回bak。
安全提取扩展名的三步写法
第一步:用basename()先剥离路径,只保留文件名部分,避免目录名里含点干扰;
第二步:用pathinfo(..., PATHINFO_EXTENSION)提取扩展名;
第三步:用trim()清理可能的空白字符,尤其当原始路径含不可见空格或制表符时——这步漏掉会导致后续in_array判断失败。
完整示例:$ext = trim(pathinfo(basename($full_path), PATHINFO_EXTENSION));
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











