100 votes

Code de boucle pour chaque fichier dans un répertoire

J'ai un répertoire d'images que je veux parcourir et faire des calculs de fichier. C'est peut-être juste un manque de sommeil, mais comment pourrais-je utiliser PHP pour chercher dans un répertoire donné et passer en boucle dans chaque fichier en utilisant une sorte de boucle for?

Merci!

255voto

Emil Vikström Points 42251

scandir :

 $files = scandir('folder/');
foreach($files as $file) {
  //do your work here
}
 

ou glob peut être encore mieux pour vos besoins:

 $files = glob('folder/*.{jpg,png,gif}', GLOB_BRACE);
foreach($files as $file) {
  //do your work here
}
 

61voto

squirrel Points 1242

Découvrez la classe DirectoryIterator .

À partir d'un des commentaires sur cette page:

 // output all files and directories except for '.' and '..'
foreach (new DirectoryIterator('../moodle') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
}
 

La version récursive est RecursiveDirectoryIterator .

9voto

fvox Points 631

Cherche la fonction glob () :

 <?php
$files = glob("dir/*.jpg");
foreach($files as $jpg){
    echo $jpg, "\n";
}
?>
 

3voto

Phill Pafford Points 32046

Essayez GLOB ()

 $dir = "/etc/php5/*";  

// Open a known directory, and proceed to read its contents  
foreach(glob($dir) as $file)  
{  
    echo "filename: $file : filetype: " . filetype($file) . "<br />";  
}  
 

3voto

Jake Points 741

Utilisez la fonction glob () dans une boucle foreach () pour faire tout ce qui est nécessaire est une option. J'ai également utilisé la fonction file_exists () dans l'exemple ci-dessous pour vérifier si le répertoire existe avant d'aller plus loin.

 $directory = 'my_directory/';
$extension = '.txt';

if ( file_exists($directory) ) {
   foreach(glob($directory.'*'.$extension) as $file){
      print $file.'</br>';//Print file name
   }
}
else {
   print "Directory ${directory} doesn't exist!";
 

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X