Avatar ·

如何在 PHP 中获取文件扩展名?可靠的方法与陷阱

大家好!我是一名 PHP 初学者开发者,遇到了一个看似简单的任务:我需要从文件名中获取文件扩展名。我有一个变量,例如 `$filename = "document.pdf"` 或 `$path = "/var/www/uploads/image.jpg"`。我需要提取 "pdf" 或 "jpg"。 我尝试了最简单的方法——用点号进行 explode: ```php $filename = "document.pdf"; $parts = explode('.', $filename); $ext = end($parts); echo $ext; // pdf ``` 但立即出现了问题。首先,如果文件名中有多个点,例如 `my.file.name.txt`?我的代码会输出 "txt",这似乎是正确的,但万一这不是我想要的?其次,如果是完整路径而不是单纯的文件名呢?例如 `/home/user/file.tar.gz`——explode 会按斜杠和点号分割,结果可能出乎意料。第三,如何处理没有扩展名的文件,比如 `Makefile` 或 `.htaccess`?我的代码会返回 "htaccess",但这在传统意义上并不是扩展名。 我听说有内置的