PHP pone a nuestra disposición diferentes funciones del sistema de ficheros (filesystem) con las que podemos obtener información sobre rutas.
Para obtener este tipo de información podemos destacar las siguientes funciones:
- pathinfo()
- basename()
- dirname()
- realpath()
- parse_url()
pathinfo()
pathinfo() es una de las funciones que desde PHP4> nos ha permitido obtener información sobre una ruta.
Puede recibir 2 parámetros, uno será la ruta que queremos analizar y otro es una serie de opciones con las que obtener información más específica.
Si a pathinfo() no le indicamos ninguna opción, nos devuelve toda la información en forma de array.
1 2 3 4 5 6 7 8 |
<?php $path = pathinfo('uploads/JavaScript-for-Kids.pdf'); echo print_r($path); echo "directorio: ".$path["dirname"]; echo "nombre y extensión: ".$path["basename"]; echo "extension: ".$path["extension"]; echo "nombre: ".$path["filename"]; |
Y este sería el resultado:
1 2 3 4 5 6 |
Array ( [dirname] => uploads [basename] => JavaScript-for-Kids.pdf [extension] => pdf [filename] => JavaScript-for-Kids ) |
Si le indicamos el parámetro opcional, nos devolverá el resultado en forma de cadena. Las opciones disponibles son: PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION y PATHINFO_FILENAME.
1 2 |
<?php $extension = pathinfo('uploads/JavaScript-for-Kids.pdf', PATHINFO_EXTENSION); |
dirname()
Otra función interesante con la que podemos obtener información sobre una ruta es dirname(). Nos devuelve la ruta del fichero desde el nivel en el que que ha sido consultado.
1 2 3 |
<?php $path = dirname('uploads/JavaScript-for-Kids.pdf'); echo "path: ".$path; |
1 |
path: uploads |
Con la llegada de PHP7 se incluyó un parámetro opcional para poder indicar el nivel superior que queremos consultar, teniendo que ser este siempre mayor que 0.
basename()
La función basename() siempre devuelve el ultimo componente de la ruta, ya sea este un directorio o un fichero.
1 2 3 |
<?php $path = basename('uploads/JavaScript-for-Kids.pdf'); echo $path; |
1 |
JavaScript-for-Kids.pdf |
Se le puede pasar un parámetro, que funcionará como un sufijo para así poder excluir parte de la ruta del fichero.
1 2 3 |
<?php $path = basename('uploads/JavaScript-for-Kids.pdf', '.pdf'); echo $path; |
1 |
JavaScript-for-Kids |
realpath()
La función realpath() nos devuelve la ruta absoluta canonizada. Entendemos por canonizada cuando se elimina todo tipo de enlaces simbólicos (../ ó delimitadores de finalización como el slace /)
1 2 3 |
<?php $path = realpath('uploads/JavaScript-for-Kids.pdf'); echo $path; |
1 |
var/www/vhosts/artegrafico.net/uploads/JavaScript-for-Kids.pdf |
parse_url()
Aunque la función parse_url() no es específica del sistema de ficheros de PHP, he creido oportuno incluirla ya que nos permite obtener información sobre una URL.
parse_url() no realiza comprobaciones de si existe la URL, tan solo se encarga de convertir la URL en fragmentos legibles.
Esta información nos será devuelta en forma de array.
1 2 3 |
<?php $path = parse_url('https://blog.artegrafico.net/estructura-de-un-proyecto-con-sass'); echo print_r($path); |
1 2 3 4 5 |
Array( [scheme] => https [host] => blog.artegrafico.net [path] => /estructura-de-un-proyecto-con-sass ) |
Puede recibir un parámetro para así obtener información más precisa sobre la URL.
1 2 |
<?php echo "host: ".pathinfo('https://blog.artegrafico.net/estructura-de-un-proyecto-con-sass', PHP_URL_HOST); |