¿Cómo puedo obtener la extensión de un archivo en PHP?

Resuelto Bite code asked hace 54 años • 32 respuestas

Esta es una pregunta que puedes leer en todas partes de la web con varias respuestas:

$ext = end(explode('.', $filename));
$ext = substr(strrchr($filename, '.'), 1);
$ext = substr($filename, strrpos($filename, '.') + 1);
$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);

$exts = split("[/\\.]", $filename);
$n    = count($exts)-1;
$ext  = $exts[$n];

etc.

Sin embargo, siempre existe "la mejor manera".

Bite code avatar Jan 01 '70 08:01 Bite code
Aceptado

Las personas de otros lenguajes de scripting siempre piensan que el suyo es mejor porque tienen una función incorporada para hacer eso y no PHP (estoy viendo Pythonistas en este momento :-)).

De hecho, existe, pero poca gente lo sabe. Encontrarse pathinfo():

$ext = pathinfo($filename, PATHINFO_EXTENSION);

Esto es rápido e integrado. pathinfo()puede brindarle otra información, como la ruta canónica, dependiendo de la constante que le pase.

Recuerde que si desea poder trabajar con caracteres que no sean ASCII, primero debe configurar la configuración regional. Por ejemplo:

setlocale(LC_ALL, 'en_US.UTF-8');

Además, tenga en cuenta que esto no tiene en cuenta el contenido del archivo ni el tipo MIME , solo obtiene la extensión. Pero es lo que pediste.

Por último, tenga en cuenta que esto solo funciona para una ruta de archivo, no para una ruta de recursos URL, que se cubre mediante PARSE_URL.

Bite code avatar Oct 06 '2008 11:10 Bite code

pathinfo()

$path_info = pathinfo('/foo/bar/baz.bill');

echo $path_info['extension']; // "bill"
Adam Wright avatar Oct 06 '2008 11:10 Adam Wright