<?php
function scanDirectories($rootDir, $allData=array()) {
// set filenames invisible if you want
$invisibleFileNames = array(".", "..", ".htaccess", ".htpasswd");
// run through content of root directory
$dirContent = scandir($rootDir);
foreach($dirContent as $key => $content) {
// filter all files not accessible
$path = $rootDir.'/'.$content;
if(!in_array($content, $invisibleFileNames)) {
// if content is file & readable, add to array
if(is_file($path) && is_readable($path)) {
// save file name with path
$allData[] = $path;
// if content is a directory and readable, add path and name
}elseif(is_dir($path) && is_readable($path)) {
// recursive callback to open new directory
$allData = scanDirectories($path, $allData);
}
}
}
return $allData;
}
?>
Tu crées une fonction qui liste et trie les dossiers :
function listeDossiers($chemin){
$dossier = opendir($chemin); // On ouvre le dossier
if($dossier){ // Si ca marche
while($f = readdir($dossier)){ // On liste fichiers et dossiers
if(is_dir($chemin.$f)){
echo "Dossier : $f"<br>";
}
}
}
}
Et tu crées une fonction listeFichiers(), exactement la même, mais tu remplaces is_dir par is_file.
Ces fonctions sont simples, tu peux le faire récursivement (si c'est un dossier tu rappelles la fonction listeDossier($chemin.$f); ).
Attention, beaucoup de personnes font l'erreur d'utiliser is_dir($f) ou is_file($f). Il ne faut surtout pas oublier d'y ajouter le chemin du dossier ouvert avec opendir().
Ps : Tu peux combiner les deux fonctions en mettant un else à if(is_dir(..)). Ce sera plus pratique.