¿Cómo puedo obtener la extensión de un archivo en PHP?
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".
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.
pathinfo()
$path_info = pathinfo('/foo/bar/baz.bill');
echo $path_info['extension']; // "bill"