如何在 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",但这在传统意义上并不是扩展名。
我听说有内置的