Hay tres funciones en PHP que ayudan mucho para programar, las tres tienen que ver con el manejo de nombres de archivo (no con el archivo en si), estas son:
basename($cadena[, $sufijo])
Regresa el nombre del archivo o directorio, por ejemplo:
<?php
basename('/var/www/index.html'); //regresa 'index.html'
basename('/var/www'); //regresa 'www'
?>
Adicionalmente si se le pasa un segundo parámetro se removerá el sufijo si es que existe por ejemplo:
<?php
basename('/var/www/index.html', '.html'); //regresa 'index'
?>
dirname($cadena)
Regresa el nombre del directorio padre del archivo o directorio, es decir regresa lo opuesto a basename
<?php
dirname('/var/www/index.html'); //regresa '/var/www'
dirname('/var/www'); //regresa '/var'
?>
Debe notarse que no regresará el último separador (/)
pathinfo($cadena[, $opciones])
Regresa información del archivo, si no se le pasan opciones regresa un arreglo con las siguientes llaves:
dirname: nombre del directorio, es la misma salida de dirname($cadena)
basename: nombre del archivo, es la misma salida de basename($cadena)
extension: Si la extensión existe estará presente y será la extensión del archivo (cadena a partir del último .)
filename: nombre del archivo sin extension
Por ejemplo:
<?php
pathinfo('/var/www/index.html');
/*
regresa:
Array
(
[dirname] => /var/www
[basename] => index.html
[extension] => html
[filename] => index
)
*/
pathinfo('/var/www/index');
/*
regresa:
Array
(
[dirname] => /var/www
[basename] => index
[filename] => index
)
*/
pathinfo('/var/www/index.inc.php');
/*
regresa:
Array
(
[dirname] => /var/www
[basename] => index.inc.php
[extension] => php
[filename] => index.inc
)
*/
pathinfo('/var/www');
/*
regresa:
Array
(
[dirname] => /var
[basename] => www
[filename] => www
)
*/
?>
Adicionalmente se puede pasar una constante como parámetro para especificar unicamente un valor, en este caso la función regresa una cadena solamente; las constantes posibles son:
PATHINFO_DIRNAMEPATHINFO_BASENAMEPATHINFO_EXTENSIONPATHINFO_FILENAME
De los cuales, solamente son útiles: PATHINFO_EXTENSION y PATHINFO_FILENAME ya que PATHINFO_DIRNAME es equivalente a dirname y PATHINFO_BASENAME es equivalente a basename
PATHINFO_FILENAME evitar hacer dos llamadas (una a filepath para saber la extensión y la siguiente a basename con la extensión como sufijo para saber el nombre del archivo)
Ejemplo:
<?php
pathinfo('/var/www/index.html', PATHINFO_EXTENSION); //regresa 'html'
pathinfo('/var/www/index.html', PATHINFO_FILENAME); //regresa 'index'
?>