Arts numériques 1
Accueil du site / Modules / Code : PHP / plus : lister le contenu d’un répertoire avec PHP

Php permet de lister le contenu de répertoires, ce qui peut être utile : création de galerie image à la volée, par exemple, ou comme dans le script ci dessous, lister les pages html et en faire un navigateur automatique.

Lister le contenu brut

On va commencer par lister comme des brutes ce qu’il y a dans le dossier pointé. Ici on pointe sur le répertoire courant, celui où est placé notre fichier.
Voir la définition de opendir sur php.net

<?php
$dir = "./";
//  si le dossier pointe existe
if (is_dir($dir)) {

   // si il contient quelque chose
   if ($dh = opendir($dir)) {

       // boucler tant que quelque chose est trouve
       while (($file = readdir($dh)) !== false) {

           // affiche le nom et le type
           echo "fichier : $file : type : " . filetype($dir . $file) . "<br />\n";
       }
       // on ferme la connection
       closedir($dh);
   }
}
?>

C’est brut de brut car les deux premiers items de la liste sont "." et ".." qui sont des éléments du serveurs, pas censés être vus.

On peut affiner un peu pour les masquer :

<?php
$dir = "./";
//  si le dossier pointe existe
if (is_dir($dir)) {

   // si il contient quelque chose
   if ($dh = opendir($dir)) {

       // boucler tant que quelque chose est trouve
       while (($file = readdir($dh)) !== false) {

           // affiche le nom et le type si ce n'est pas un element du systeme
           if( $file != '.' && $file != '..') {
           echo "fichier : $file : type : " . filetype($dir . $file) . "<br />\n";
           }
       }
       // on ferme la connection
       closedir($dh);
   }
}
?>

Voilà. On peut affiner le script pour n’afficher que les dossier ou n’afficher que les fichiers, en testant le type. On peut aussi afficher les dossiers puis les fichiers, on peut aussi faire des liens sur les noms de fichiers pour les ouvrir, bref on peut faire beaucoup de chose.

Pour pouvoir afficher uniquement les images, on placera par exemple en plus du test sur les elements système :

if( $file != '.' && $file != '..' && preg_match('#\.(jpe?g|gif|png)$#i', $file)) {

C’est une expression régulière qui vérifie que le fichier se termine par une des extensions d’image web : jpeg, jpg, gif ou png. Les expressions régulières sont un outil puissant mais parfois difficile à manipuler. Les coder, ou faire des recherches sur le net pour trouver la bonne est parfois casse-tête. Mais quand ça marche, c’est puissant.
On peut donc faire la même chose pour sélectionner d’autres types de fichiers.

Répondre à cet article

Forum

  • plus : lister le contenu d’un répertoire avec PHP

    20 avril 2012, par Tambra

    Bonjour vous pourriez me fournir le nom du CMS de ce site web. Egalement si sa manipulation est possible pour un nouveau dans la fabrication de site web.

    pneu 807 taille

    Pour le pneu pas cher a toulouse vous pouvez aussi avoir pneus discount suisse

    payer pneus discount frais leader pneu pas cher tunisie pneus discount windows pneus discount 4x4 et aussi pneu 31 Il es aussi possible d’avoir un pneus discount alfortville aussi un pneu pas cher reims ou bien encore pneu evergreen vous pouvez aussi avoir un pneus discount 69 egalement un pneu pas cher valenciennes

  • plus : lister le contenu d’un répertoire avec PHP

    11 mai 2012, par Francois

    Bonjour,
    Merci beaucoup pour cet article.
    Comment fait-on pour faire un lien sur le nom de fichier (je souhaite lister les PDF d’un répertoire et les rendre cliquables) ?