Tips de PHP: Funciones para el manejo de Nombres de Archivo

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'
?>

Temas similares