Dans PHP, la fonction glob() permet de récupérer les chemins de fichiers qui correspondent à un certain pattern défini. Bien que cette technique ressemble à opendir/readdir qui liste les fichiers d'un répertoire, celle-ci permet de faire l'équivalent, en appliquant un filtre sur les extensions des fichiers. Donc nul besoin de vérifier si l'élément en cours est '.' ou '.' comme dans un exemple que j'ai donné il y a quelques semaines : Lister les fichiers d'un répertoire en PHP.
Parmi les flags à utiliser, on en note un qui s'appelle GLOB_BRACE. Il permet de lister plusieurs patterns de recherche, par exemple une série d'extensions.
$directory = 'backup/files/';Basename() permet d'extraire le nom du fichier et filesize() retourne sa taille en octets. Mais attention, les extensions sont sensibles à la case! Il faudra donc prévoir le coup si on veut que tous les fichiers sont pris en compte.
$types = '*.{gif,jpg,jpeg,png}';
$list = glob($directory.$types, GLOB_BRACE);
foreach($list as $imagepath) {
echo basename($imagepath) . ' (' . filesize($imagepath) . ')';
}