C'è una funzione che mi restituisca tutti i file (e relativi percorsi) presenti nel sottoalbero radicato in una directory data?
C'è una funzione che mi restituisca tutti i file (e relativi percorsi) presenti nel sottoalbero radicato in una directory data?
te la devi creare. a te serve listare i file in una cartella?
a me serve listare tutti i file presenti nel sottoalbero radicato nella directory data.
function read_dir($dir) {
$array = array();
$d = dir($dir);
while (false !== ($entry = $d->read())) {
if($entry!='.' && $entry!='..') {
$entry = $dir.$entry;
if(is_dir($entry)) {
$array = array_merge($array, read_dir($entry.'/'));
} else {
$array[] = $entry;
}
}
}
$d->close();
return $array;
}
Using:
print_r(read_dir('/home/'));
non mi fido di quel "merge"... quindi preferisco la mia funzione ricorsiva:
codice:function list_dir($dir) { //il secondo argomento è opzionale (serve solo per la ricorsione): $args = func_get_args(); if(isset($args[1])) $lista = $args[1]; //scorriamo la dir attuale: $dp = opendir($dir); while($file = readdir($dp)) { if($file != '..' and $file != '.' and $file != '') { //se è un file, lo aggiungiamo alla lista: if(is_file($dir . '/' . $file)) { if(isset($lista)) $lista[count($lista)] = $dir . '/' . $file; else $lista[0] = $dir . '/' . $file; } //se è una directory, andiamo ricorsivamente a scorrerla: if(is_dir($dir . '/' . $file)) { if(isset($lista)) $lista = list_dir($dir . '/' . $file, $lista); else $lista = list_dir($dir . '/' . $file); } } } return $lista; }
Io ho solo riportato la funzione descritta in php.net.
Poi vedi tu che farne..