W3docs

pathinfo()

La fonction pathinfo() de PHP décompose un chemin de fichier en répertoire, nom de fichier et extension sous forme de tableau associatif.

Qu'est-ce que la fonction pathinfo() ?

La fonction pathinfo() est une fonction PHP native qui découpe un chemin de fichier en ses différentes parties — le répertoire, le nom de fichier et l'extension — et les renvoie sous la forme d'un tableau associatif. C'est l'utilitaire de référence dès que vous avez besoin de répondre à des questions comme « dans quel dossier se trouve ce fichier ? » ou « quelle est l'extension d'un fichier téléversé ? » sans avoir à écrire votre propre analyse de chaîne.

Un point essentiel à comprendre dès le départ : pathinfo() travaille uniquement sur la chaîne que vous lui fournissez. Elle ne touche jamais au système de fichiers, ce qui signifie que le chemin n'a pas besoin de pointer vers un fichier existant. Cela la rend rapide et sûre à utiliser sur des valeurs saisies par l'utilisateur (par exemple, le nom d'origine d'un fichier téléversé).

Cette page couvre la syntaxe, le tableau renvoyé par pathinfo(), la façon de demander un seul composant, ainsi que les cas particuliers qui surprennent souvent (pas d'extension, dotfiles, extensions composées).

Syntaxe

pathinfo(string $path, int $flags = PATHINFO_ALL): array|string
  • $path — le chemin de fichier à inspecter. Il peut être absolu ou relatif et n'a pas besoin d'exister.
  • $flags — optionnel. Lorsqu'il est omis (ou défini à PATHINFO_ALL), la fonction renvoie un tableau associatif. Lorsqu'il est défini sur un seul indicateur, elle renvoie uniquement ce composant sous forme de chaîne.

Le tableau renvoyé par pathinfo()

Par défaut, pathinfo() renvoie un tableau associatif contenant jusqu'à quatre clés :

CléSignificationExemple pour /var/www/html/index.php
dirnameLa partie répertoire/var/www/html
basenameLe nom complet du fichier avec son extensionindex.php
extensionL'extension (sans le point)php
filenameLe nom du fichier sans extensionindex
php— editable, runs on the server

Ici, nous passons le chemin du fichier et stockons le tableau résultant dans $info, puis nous lisons chaque composant par sa clé.

Important : la clé extension n'existe que lorsque le chemin contient effectivement un .. Si le chemin n'a pas d'extension, cette clé est simplement absente du tableau, donc accéder directement à $info['extension'] déclencherait un avertissement « Undefined array key ». Protégez-vous avec $info['extension'] ?? '' en cas de doute.

Renvoyer un seul composant

Si vous n'avez besoin que d'une seule partie, passez un indicateur en deuxième argument. Les indicateurs possibles sont PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION et PATHINFO_FILENAME. Avec un seul indicateur, la fonction renvoie une chaîne plutôt qu'un tableau :

php— editable, runs on the server

C'est la façon la plus propre de récupérer uniquement l'extension — par exemple, pour vérifier qu'un fichier téléversé est d'un type autorisé.

Cas particuliers à surveiller

pathinfo() est tolérante, mais quelques résultats surprennent les développeurs :

<?php

// 1. No extension: the 'extension' key is missing entirely.
print_r(pathinfo('/etc/hosts'));
// Array ( [dirname] => /etc [basename] => hosts [filename] => hosts )

// 2. Multi-part extension: only the LAST part counts as the extension.
print_r(pathinfo('archive.tar.gz'));
// Array ( [dirname] => . [basename] => archive.tar.gz
//         [extension] => gz [filename] => archive.tar )

// 3. Dotfile: the leading dot makes the whole name the "extension".
print_r(pathinfo('/home/user/.bashrc'));
// Array ( [dirname] => /home/user [basename] => .bashrc
//         [extension] => bashrc [filename] =>  )

Remarques :

  • Un chemin sans répertoire (cas 2) indique dirname comme . (le répertoire courant).
  • Pour les noms de type .tar.gz, pathinfo() ne traite que gz comme extension — il n'existe pas de moyen natif d'obtenir tar.gz en un seul appel.
  • Un dotfile comme .bashrc est interprété comme « un fichier sans nom avec l'extension bashrc », ce qui est rarement ce que l'on souhaite. Gérez ces cas manuellement si votre code les autorise.

Quand utiliser pathinfo() ?

Utilisez pathinfo() lorsque vous avez besoin de plusieurs parties d'un chemin à la fois, ou lorsque vous préférez un tableau lisible avec des clés nommées plutôt que de mémoriser quelle fonction dédiée fait quoi :

  • Utilisez pathinfo($p) pour obtenir le répertoire, le nom et l'extension ensemble.
  • Utilisez basename() si vous n'avez besoin que du nom de fichier — elle permet également de supprimer un suffixe connu.
  • Utilisez dirname() si vous n'avez besoin que du répertoire, et elle gère plusieurs niveaux via son argument $levels.
  • Utilisez realpath() lorsque vous devez résoudre un chemin sur le système de fichiers réel (liens symboliques, .., etc.) — contrairement à pathinfo(), elle accède effectivement au disque et renvoie false pour les fichiers manquants.

Pour une vue d'ensemble plus large de la lecture et de l'écriture de fichiers, consultez PHP File Handling.

Conclusion

pathinfo() est le moyen le plus rapide de décomposer un chemin de fichier en son répertoire, son nom de base, son extension et son nom de fichier brut. Retenez qu'elle analyse uniquement la chaîne (elle ne vérifie jamais si le fichier existe), que la clé extension est absente lorsqu'il n'y a pas d'extension, et que seule la dernière extension est rapportée pour des noms comme archive.tar.gz. Pour les besoins d'un seul composant, les fonctions dédiées basename() et dirname() sont souvent plus claires.

Pratique

Pratique
Quel est le rôle de la fonction 'pathinfo()' en PHP ?
Quel est le rôle de la fonction 'pathinfo()' en PHP ?
Was this page helpful?