Como obter a extensão de um arquivo em PHP? Métodos confiáveis e armadilhas
Olá a todos! Sou um desenvolvedor PHP iniciante e me deparei com uma tarefa aparentemente simples: preciso obter a extensão do arquivo a partir do seu nome. Tenho uma variável, por exemplo, `$filename = "document.pdf"` ou `$path = "/var/www/uploads/image.jpg"`. Preciso extrair "pdf" ou "jpg".
Tentei a maneira mais simples — explode com ponto:
```php
$filename = "document.pdf";
$parts = explode('.', $filename);
$ext = end($parts);
echo $ext; // pdf
```
Mas surgiram problemas imediatamente. Primeiro, e se o nome do arquivo tiver vários pontos, por exemplo, `my.file.name.txt`? Meu código retornará "txt", o que parece estar correto, mas e se não for o que se deseja? Segundo, e se for um caminho completo, e não apenas um nome? Por exemplo, `/home/user/file.tar.gz` — o explode dividirá tudo por barras e pontos, e o resultado pode ser inesperado. Terceiro, o que fazer com arquivos sem extensão, como `Makefile` ou `.htaccess`? Meu código retornará "htaccess", mas isso não é uma extensão no sentido clássico.
Ouvi dizer que existe uma função embutida