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_DIRNAME
PATHINFO_BASENAME
PATHINFO_EXTENSION
PATHINFO_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' ?>