Avatar ·

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