Extension de fichier en PHP : 5 méthodes en 2025 (question Stack Overflow)

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment obtenir l'extension d'un fichier en PHP : bonnes pratiques 2025

\n\n

Avez-vous déjà été confronté à une situation où vous deviez rapidement déterminer quel fichier un utilisateur télécharge — une image, un document ou une archive ? Ou peut-être écrivez-vous un analyseur de fichiers et devez-vous traiter dynamiquement des centaines d'extensions ? La question "How can I get a file's extension in PHP?" figure depuis des années parmi les plus populaires sur Stack Overflow, cumulant des centaines de milliers de vues. Et ce n'est pas un hasard.

\n\n

À première vue, quoi de plus simple ? Prenez la chaîne, trouvez le point, coupez la fin. Mais PHP est un langage avec du caractère. Il propose directement plusieurs fonctions intégrées, et le choix de la bonne dépend du contexte. En 2025, alors que la sécurité et les performances sont plus importantes que jamais, nous allons passer en revue toutes les méthodes actuelles et identifier la meilleure.

\n\n

Dans cet article, vous apprendrez :

\n
    \n
  • Cinq méthodes fonctionnelles pour obtenir l'extension d'un fichier en PHP.
  • \n
  • Quelle méthode utiliser dans 95 % des cas.
  • \n
  • Comment éviter le piège des fichiers sans extension ou avec plusieurs points.
  • \n
  • Des exemples de code réels à copier.
  • \n
\n\n

Méthode 1 : La classique — pathinfo()

\n\n

Si vous demandez à n'importe quel développeur PHP expérimenté comment obtenir l'extension d'un fichier, il répondra sans hésiter : pathinfo(). C'est la méthode la plus populaire et recommandée. La fonction retourne un tableau avec les informations sur le chemin : répertoire, nom du fichier, extension et nom complet.

\n\n
<?php\n$file = 'document.pdf';\n$extension = pathinfo($file, PATHINFO_EXTENSION);\necho $extension; // Affiche : pdf\n?>\n
\n\n

La beauté de cette méthode réside dans sa simplicité et sa lisibilité. Vous transmettez le nom du fichier et la constante PATHINFO_EXTENSION — et vous obtenez un résultat propre, sans caractères superflus. pathinfo() traite correctement la plupart des cas standards, y compris les fichiers avec plusieurs points, comme archive.tar.gz — dans ce cas, il retournera gz, ce qui est logique car c'est l'extension finale.

\n\n

Avantages : intuitif, fonction intégrée, fonctionne avec des chemins de toute complexité.

\n

Inconvénients : peut retourner une chaîne vide si le fichier n'a pas d'extension.

\n\n

Méthode 2 : Travailler avec les chaînes — strrchr() + substr()

\n\n

Parfois, dans du code legacy ou des exemples pédagogiques, on rencontre une analyse manuelle. L'idée est simple : trouver le dernier point dans la chaîne et prendre tout ce qui le suit.

\n\n
<?php\n$file = 'image.jpg';\n$extension = substr(strrchr($file, '.'), 1);\necho $extension; // Affiche : jpg\n?>\n
\n\n

La fonction strrchr() trouve la dernière occurrence du caractère et retourne tout à partir de celle-ci (point inclus). substr() avec le paramètre 1 supprime le point. Fonctionne de manière fiable, mais le code est moins lisible.

\n\n

Fait intéressant : cette méthode est un héritage direct de l'ère des fonctions de type C. Elle est plus rapide que pathinfo() dans les micro-benchmarks, mais la différence est imperceptible dans les projets réels. Utilisez-la si vous écrivez un analyseur à forte charge et que chaque microseconde compte.

\n\n

Méthode 3 : Rapide et sale — explode()

\n\n

La méthode la plus naïve qui vient à l'esprit des débutants : diviser la chaîne par le point et prendre le dernier élément du tableau.

\n\n
<?php\n$file = 'report.xlsx';\n$parts = explode('.', $file);\n$extension = end($parts);\necho $extension; // Affiche : xlsx\n?>\n
\n\n

Attention : c'est une mauvaise pratique. Pourquoi ? Imaginez le fichier my.file.name.txt. explode() le divisera en 4 parties, et end() retournera txt. Cela semble correct. Mais que faire si le fichier s'appelle .htaccess ? Le tableau sera ['', 'htaccess'], et l'extension sera retournée comme htaccess, alors qu'il s'agit du nom complet du fichier. Ou un fichier sans extension — le nom lui-même sera retourné.

\n\n

Cette méthode mérite

Blogs

Book Recommendations