O PHP lê subdiretórios e faz o loop de arquivos como?

Eu preciso criar um loop através de todos os arquivos em subdiretórios. Você pode me ajudar a estruturar meu código como este:

$main = "MainDirectory"; loop through sub-directories { loop through filels in each sub-directory { do something with each file } }; 

Você pode ajudar, plz?

Use RecursiveDirectoryIterator em conjunto com RecursiveIteratorIterator.

 $di = new RecursiveDirectoryIterator('path/to/directory'); foreach (new RecursiveIteratorIterator($di) as $filename => $file) { echo $filename . ' - ' . $file->getSize() . ' bytes 
'; }

Você provavelmente quer usar uma function recursiva para isso, no caso de seus diretórios sub diretórios sub-sub

 $main = "MainDirectory"; function readDirs($main){ $dirHandle = opendir($main); while($file = readdir($dirHandle)){ if(is_dir($main . $file) && $file != '.' && $file != '..'){ readDirs($file); } else{ //do stuff } } } 

não testou o código, mas isso deve estar próximo do que você deseja.

Você precisa adicionar o caminho para sua chamada recursiva.

 function readDirs($path){ $dirHandle = opendir($path); while($item = readdir($dirHandle)) { $newPath = $path."/".$item; if(is_dir($newPath) && $item != '.' && $item != '..') { echo "Found Folder $newPath
"; readDirs($newPath); } else{ echo '  Found File or .-dir '.$item.'
'; } } } $path = "/"; echo "$path
"; readDirs($path);

Gosto de glob com seus curingas:

 foreach (glob("*/*.txt") as $filename) { echo "$filename\n"; } 

Detalhes e cenários mais complexos.

Mas se você tiver uma estrutura de pastas complexas, RecursiveDirectoryIterator é definitivamente a solução.

Venha, primeiro experimente você mesmo!

O que você precisará:

 scandir() is_dir() 

e, claro, foreach

http://php.net/manual/en/function.is-dir.php

http://php.net/manual/en/function.scandir.php

Outra solução para ler com subdiretórios e sub-arquivos (definir pasta correta):

 "; } ?> 
  "; } } } } } } static function renameNewFileInFolder() { //Renames the files into desired name $main1 = 'C:\xampp\htdocs\practice\demomainfolder'; $dirHandle = opendir($main1); while ($file = readdir($dirHandle)) { if (basename($file) != '.' && basename($file) != '..') { $filepath = $main1 . '\\' . $file; $text1 = strtolower($filepath); rename($filepath, $text1); $text2 = str_replace(' ', '_', $text1); if (rename($filepath, $text2)) echo $filepath . " is renamed to " . $text2 . '
'; } } } } renameNewFile::copyToNewFolder(); renameNewFile::renameNewFileInFolder(); ?>