pathinfo

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pathinfoDevuelve información sobre una ruta del sistema

Descripción

pathinfo(string $path, int $flags = PATHINFO_ALL): array|string

pathinfo() devuelve información sobre la ruta path, en forma de string o array asociativo, dependiendo del argumento flags.

Nota:

Para más información sobre la lectura de la ruta actual, consulte la sección sobre las variables predefinidas.

Nota:

pathinfo() opera de manera ingenua sobre la cadena de entrada, y no es consciente de los sistemas de archivos actuales, o de los componentes de rutas como "..".

Nota:

Solo en sistemas Windows, el carácter \ será interpretado como separador de directorio. En otros sistemas, será tratado como cualquier otro carácter.

Precaución

La función pathinfo() es sensible a la configuración local, por lo tanto, si se desea que analice correctamente una ruta que contenga caracteres de varios bytes, la configuración local correspondiente debe ser definida utilizando la función setlocale().

Parámetros

path

La ruta a analizar.

flags

Especifica qué elemento será devuelto. Puede pasar una de las constantes PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION y PATHINFO_FILENAME.

Si flags no es especificado, todos los elementos son devueltos.

Valores devueltos

Si flags no es utilizado, esta función devolverá un array asociativo que contiene los siguientes elementos : dirname, basename, extension (si existe), y filename.

Nota:

Si path contiene más de una extensión, PATHINFO_EXTENSION devuelve únicamente la última y PATHINFO_FILENAME eliminará únicamente la última también (ver el primer ejemplo a continuación).

Nota:

Si path no tiene extensión, el elemento extension no será devuelto (ver el segundo ejemplo a continuación).

Nota:

Si basename del argumento path comienza con un punto, los caracteres siguientes son interpretados como la extension, y el filename estará vacío (ver el tercer ejemplo a continuación).

Si flags es utilizado, esta función devolverá una string que contiene los elementos.

Ejemplos

Ejemplo #1 Ejemplo con pathinfo()

<?php
$path_parts
= pathinfo('/www/htdocs/inc/lib.inc.php');

echo
$path_parts['dirname'], "\n";
echo
$path_parts['basename'], "\n";
echo
$path_parts['extension'], "\n";
echo
$path_parts['filename'], "\n";
?>

El resultado del ejemplo sería:

/www/htdocs/inc
lib.inc.php
php
lib.inc

Ejemplo #2 Ejemplo pathinfo() sin extensión

<?php
$path_parts
= pathinfo('/path/emptyextension.');
var_dump($path_parts['extension']);

$path_parts = pathinfo('/path/noextension');
var_dump($path_parts['extension']);
?>

El resultado del ejemplo sería algo similar a:

string(0) ""

Notice: Undefined index: extension in test.php on line 6
NULL

Ejemplo #3 Ejemplo con pathinfo()

<?php
print_r
(pathinfo('/some/path/.test'));
?>

El resultado del ejemplo sería algo similar a:

Array
(
    [dirname] => /some/path
    [basename] => .test
    [extension] => test
    [filename] =>
)

Ejemplo #4 Ejemplo de pathinfo() con desestructuración de array

El argumento flags no es una máscara de bits. Solo un valor puede ser proporcionado. Para seleccionar únicamente un conjunto limitado de valores analizados, utilice la desestructuración de array como se muestra a continuación:

<?php
['basename' => $basename, 'dirname' => $dirname] = pathinfo('/www/htdocs/inc/lib.inc.php');
var_dump($basename, $dirname);
?>

El resultado del ejemplo sería algo similar a:

string(11) "lib.inc.php"
     string(15) "/www/htdocs/inc"

Ver también

  • dirname() - Devuelve la ruta de la carpeta padre
  • basename() - Devuelve el nombre del componente final de una ruta
  • parse_url() - Analiza un URL y devuelve sus componentes
  • realpath() - Retorna la ruta de acceso canónica absoluta

add a note

User Contributed Notes 3 notes

up
13
Pietro Baricco
13 years ago
Use this function in place of pathinfo to make it work with UTF-8 encoded file names too

<?php
function mb_pathinfo($filepath) {
preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im',$filepath,$m);
if(
$m[1]) $ret['dirname']=$m[1];
if(
$m[2]) $ret['basename']=$m[2];
if(
$m[5]) $ret['extension']=$m[5];
if(
$m[3]) $ret['filename']=$m[3];
return
$ret;
}
?>
up
7
urvi
2 years ago
about the path, there are one thing you should note :
On Windows, both slash (/) and backslash (\) are used as directory separator character. In other environments, it is the forward slash (/). (this explain is from basename() function part https://www.php.net/manual/en/function.basename.php)
example:
<?php
$path
= "https://urvidutta.com /a\b\c\filename.pdf";

echo
pathinfo($pdfUrl, PATHINFO_BASENAME); //get basename
//output
//on window: result is filename.pdf
//on Linux: result is a\b\c\filename.pdf (that is may not your expect)

//so in order to get same result in different system. i will do below first.
$path = str_replace($path, '\\', '/'); //convert '\' to '/'
?>
up
10
n0dalus
20 years ago
If a file has more than one 'file extension' (seperated by periods), the last one will be returned.
For example:
<?php
$pathinfo
= pathinfo('/dir/test.tar.gz');
echo
'Extension: '.$pathinfo['extension'];
?>
will produce:
Extension: gz

and not tar.gz
To Top