«

PHP获取文件扩展名pathinfo函数用法

时间:2026-11-14 07:19     作者:emer     分类: PHP


前言

上传文件、处理附件时需要取得文件扩展名来判断类型或重命名。pathinfo 是 PHP 获取路径信息的标准函数,一次返回目录、文件名、扩展名等多段,比自己写 explode 切字符串更可靠。本文讲解 pathinfo 基本用法、只取扩展名、大小写处理、配合上传校验。

操作步骤

1. 获取完整路径信息

$info = pathinfo('/var/www/upload/photo.jpg');
print_r($info);

返回 dirname、basename、extension、filename 等。

2. 只取扩展名

$ext = pathinfo('/var/www/photo.jpg', PATHINFO_EXTENSION);
echo $ext; // jpg

3. 获取不含扩展名的文件名

$name = pathinfo('photo.jpg', PATHINFO_FILENAME);

4. 小写化扩展名统一比较

$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if ($ext === 'jpg' || $ext === 'png') { /* 允许 */ }

5. 处理带多个点的文件名

$ext = pathinfo('report.v2.pdf', PATHINFO_EXTENSION); // pdf

6. 结合上传字段

$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));

常见坑

  1. 自己用 explode('.') 切,文件名含多个点会取错。
  2. 扩展名大小写不一,.JPG 和 .jpg 比较失败,先 strtolower。
  3. 只信前端扩展名不安全,要校验 MIME 和文件头。
  4. 无扩展名文件 extension 返回空,要做空判断。
  5. 中文文件名在部分环境编码异常,注意字符集。
  6. PATHINFO_EXTENSION 只取最后一个点之后的部分。
  7. 虚拟路径带 query 参数时先去掉查询串。

总结

pathinfo 配 PATHINFO_EXTENSION 是取扩展名的标准方式,比手写切分稳健。统一小写比较,并且扩展名只作辅助,真正安全靠 MIME 和文件头校验。处理上传时先判空、再白名单比较,避免绕过。

遇到问题加QQ23979811 协助处理

标签: PHP 字符串 pathinfo 文件扩展名