PHP 8.4.2 Released!

pathinfo

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

pathinfoRetourne des informations sur un chemin système

Description

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

pathinfo() retourne des informations sur le chemin path, sous forme de chaine ou de tableau associatif, ceci dépend du paramètre flags.

Note:

Pour plus d'informations sur la lecture du chemin courant, lisez la section sur les variables prédéfinies.

Note:

pathinfo() opère naivement sur la chaîne d'entrée, et n'est pas conscient des systèmes de fichiers actuel, ou des composants de chemins tel que "..".

Note:

Sur les systèmes Windows uniquement, le caractère \ sera interprété comme un séparateur de répertoire. Sur les autres systèmes, il sera traité comme n'importe quel autre caractère.

Attention

La fonction pathinfo() est sensible à la configuration locale, aussi, si vous voulez qu'elle analyse correctement un chemin contenant les caractères sur plusieurs octets, la locale correspondante doit être définie en utilisant la fonction setlocale().

Liste de paramètres

path

Le chemin à analyser.

flags

Spécifie quel élément sera retourné. Vous pouvez passer l'une des constantes PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION et PATHINFO_FILENAME.

Si flags n'est pas renseigné, tous les éléments sont retournés.

Valeurs de retour

Si flags n'est pas utilisé, cette fonction retournera un tableau associatif contenant les éléments suivants : dirname, basename, extension (s'il y en a), et filename.

Note:

Si path contient plus d'une extension, PATHINFO_EXTENSION retourne uniquement le dernier et PATHINFO_FILENAME va supprimer uniquement le dernier également (voir le premier exemple ci-dessous).

Note:

Si path n'a pas d'extension, l'élément extension ne sera pas retourné (voir le second exemple ci-après).

Note:

Si basename du paramètre path commence par un point, les caractères suivants sont interprétés comme l' extension, et le filename sera vide (voir le troisième exemple ci-dessous).

Si flags est utilisé, cette fonction retournera une chaîne de caractères contenant les éléments.

Exemples

Exemple #1 Exemple avec 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";
?>

L'exemple ci-dessus va afficher :

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

Exemple #2 Exemple pathinfo() sans extension

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

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

Résultat de l'exemple ci-dessus est similaire à :

string(0) ""

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

Exemple #3 Exemple avec pathinfo()

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

Résultat de l'exemple ci-dessus est similaire à :

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

Exemple #4 Exemple de pathinfo() avec déréférencement de tableau

Le paramètre flags n'est pas un masque de bits. Seule une valeur peut être fournie. Pour sélectionner uniquement un ensemble limité de valeurs analysées, utilisez la déstructuration de tableau comme ceci :

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

Résultat de l'exemple ci-dessus est similaire à :

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

Voir aussi

  • dirname() - Renvoie le chemin du dossier parent
  • basename() - Retourne le nom de la composante finale d'un chemin
  • parse_url() - Analyse une URL et retourne ses composants
  • realpath() - Retourne le chemin canonique absolu

add a note

User Contributed Notes 3 notes

up
13
Pietro Baricco
12 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
19 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