Chose Language:
Author: Admin/Publisher |finished | checked

PHP pathinfo


La función pathinfo de PHP devuelve información acerca de la ruta de un archivo o directorio en forma de un array asociativo o un string dependiendo de la opción elegida en $option.

Description / Descripción
pathinfo(string $path, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME): mixed

Precaución
pathinfo() tiene en cuenta la configuración regional, por lo que, para analizar una ruta que contiene caracteres multibyte correctamente, se debe establecer la configuración regional correspondiente usando la función setlocale().

Parámetros

$path – La ruta a analizar.

$options – tiene como posible parámetro las siguientes constantes:

  • PATHINFO_DIRNAME,
  • PATHINFO_BASENAME,
  • PATHINFO_EXTENSION
  • PATHINFO_FILENAME
  • PATHINFO_ALL

Retornos

Si no se especifica $options, se utilizará la constante PATHINFO_ALL, esta hará que se devuelvan todos los elementos disponible (array asociativo).

En caso de utilizar otra constante (flag) se devolverá lo que se ha especificado como un string

Aspectos a tener en cuenta:
Si path tiene más de una extensión, PATHINFO_EXTENSION devuelve solamente la última
Si path tiene más de una extensión, PATHINFO_FILENAME solamente quita la última
Si path no posee una extensión no se devolverá ningún valor.
Si basename comienza con . los siguientes caracteres serán extensión quedando filename vacío

Ejemplos de PHP pathinfo

Antes que nada debemos saber lo que nos devuelve el array asociativo, qué elementos tiene, cosa que no encontré en php.net, pero si podemos saberlo corrriendole un var_dump:

Knowing the associative array returned
$path = '/home/user/Documents/archivo.txt';
$info = pathinfo($path);
var_dump($info);
array(4) {
  ["dirname"]=>
  string(20) "/home/user/Documents"
  ["basename"]=>
  string(11) "archivo.txt"
  ["extension"]=>
  string(3) "txt"
  ["filename"]=>
  string(7) "archivo"
}

Como puede ver info[‘basename’] da el mismo resultado que si corriéramos basename() y info[‘dirname’] es equivalente a correr dirname().

Recuerde que vimos que si nuestro path empezaba con . todo lo demas se trataria comu una extension veamos un ejemplo de eso ahora.

.<path>(probado en PHP 8.2.5)
$path = '/home/user/Documents/.archivo.txt';
$info = pathinfo($path);
var_dump($info);
array(4) {
  ["dirname"]=>
  string(20) "/home/user/Documents"
  ["basename"]=>
  string(12) ".archivo.txt"
  ["extension"]=>
  string(3) "txt"
  ["filename"]=>
  string(8) ".archivo"
}

Esto me ha sorprendido gratamente, ya que no ha tratado en este caso, tal cual dice en las notas de php.net talvez sea por la versión. Aunque si es verdad que quito la última extensión

pathinfo en archivo sin extension
$partes_ruta = pathinfo('/path/emptyextension.');
var_dump($partes_ruta);
array(4) {
  ["dirname"]=>
  string(5) "/path"
  ["basename"]=>
  string(15) "emptyextension."
  ["extension"]=>
  string(0) ""
  ["filename"]=>
  string(14) "emptyextension"
}

Ahora daré un ejemplo para las constantes que nos darán un string como retorno, recordemos que estas son las siguientes:

  • PATHINFO_DIRNAME,
  • PATHINFO_BASENAME,
  • PATHINFO_EXTENSION
  • PATHINFO_FILENAME
retornos de strings usando constantes
$partes_ruta = pathinfo('/path/emptyextension/parr.txt',PATHINFO_DIRNAME);
var_dump($partes_ruta);
string(20) "/path/emptyextension"
Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category