Extensão de arquivo em PHP: 5 maneiras em 2025 (pergunta do Stack Overflow)

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Como obter a extensão de arquivo em PHP: melhores práticas de 2025

\n\n

Você já se deparou com uma situação em que precisava determinar rapidamente qual arquivo o usuário está enviando — uma imagem, um documento ou um arquivo compactado? Ou talvez você esteja escrevendo um parser de arquivos e precise processar dinamicamente centenas de extensões? A pergunta "How can I get a file's extension in PHP?" está há anos entre as mais populares no Stack Overflow, acumulando centenas de milhares de visualizações. E isso não é por acaso.

\n\n

Parece simples, não é? Pegue a string, encontre o ponto, corte o final. Mas o PHP é uma linguagem com personalidade. Ele oferece várias funções nativas, e escolher a correta depende do contexto. Em 2025, quando segurança e desempenho são mais importantes do que nunca, vamos analisar todas as maneiras atuais e identificar a melhor.

\n\n

Neste artigo, você aprenderá:

\n
    \n
  • Cinco maneiras funcionais de obter a extensão de arquivo em PHP.
  • \n
  • Qual método deve ser usado em 95% dos casos.
  • \n
  • Como não cair em armadilhas com arquivos sem extensão ou com vários pontos.
  • \n
  • Exemplos reais de código para copiar.
  • \n
\n\n

Método 1: O clássico — pathinfo()

\n\n

Se você perguntar a qualquer desenvolvedor PHP experiente como obter a extensão de um arquivo, ele responderá sem hesitar: pathinfo(). Esta é a maneira mais popular e recomendada. A função retorna um array com informações do caminho: diretório, nome do arquivo, extensão e nome completo.

\n\n
<?php\n$file = 'document.pdf';\n$extension = pathinfo($file, PATHINFO_EXTENSION);\necho $extension; // Exibe: pdf\n?>\n
\n\n

A beleza deste método está na sua simplicidade e legibilidade. Você passa o nome do arquivo e a constante PATHINFO_EXTENSION — e obtém um resultado limpo, sem caracteres extras. O pathinfo() lida corretamente com a maioria dos casos padrão, incluindo arquivos com vários pontos, como archive.tar.gz — neste caso, ele retorna gz, o que é lógico, pois é a extensão final.

\n\n

Vantagens: intuitivo, função nativa, funciona com caminhos de qualquer complexidade.

\n

Desvantagens: pode retornar uma string vazia se o arquivo não tiver extensão.

\n\n

Método 2: Trabalhando com strings — strrchr() + substr()

\n\n

Às vezes, em código legado ou em exemplos didáticos, você encontra parsing manual. A ideia é simples: encontrar o último ponto na string e pegar tudo o que vem depois dele.

\n\n
<?php\n$file = 'image.jpg';\n$extension = substr(strrchr($file, '.'), 1);\necho $extension; // Exibe: jpg\n?>\n
\n\n

A função strrchr() encontra a última ocorrência do caractere e retorna tudo a partir dele (incluindo o ponto). O substr() com o parâmetro 1 remove o ponto. Funciona de forma confiável, mas o código fica menos legível.

\n\n

Fato interessante: este método é um herdeiro direto da era das funções estilo C. Ele é mais rápido que o pathinfo() em micro-benchmarks, mas em projetos reais a diferença é imperceptível. Use-o se estiver escrevendo um parser de alta carga e cada microssegundo contar.

\n\n

Método 3: Rápido e sujo — explode()

\n\n

A maneira mais ingênua que vem à mente dos iniciantes: dividir a string pelo ponto e pegar o último elemento do array.

\n\n
<?php\n$file = 'report.xlsx';\n$parts = explode('.', $file);\n$extension = end($parts);\necho $extension; // Exibe: xlsx\n?>\n
\n\n

Atenção: esta é uma má prática. Por quê? Imagine o arquivo my.file.name.txt. O explode() o dividirá em 4 partes, e end() retornará txt. Parece correto. Mas e se o arquivo se chamar .htaccess? O array será ['', 'htaccess'], e a extensão retornada será htaccess, embora seja o nome completo do arquivo. Ou um arquivo sem extensão — retornará o próprio nome.

\n\n

Este método deve

Blogs

Book Recommendations