ciao, visto che oggi mi serviva una cosa simile sono partito dal codice che abbiamo scritto ieri, e che come ti avevo detto non avevo testato.
Era pieno di errori anche di sintassi, comunque questo l'ho testato e sembra funzionare:
codice:
<?php
$filter = "jpg";
// directory dove cercare
$directory = "D:/Archivio Foto/";
function readDirRecursive($directory, $filter = '', $debug = 0) {
if($directory{strlen($directory)-1} !== '/' && $directory{strlen($directory)-1} !== '\\') {
$directory .= '/';
}
if($debug) {
echo "funzione richiamata con i paremtri:
";
echo "directory:".$directory."
";
echo "filter:".$filter."
";
}
$items = array();
$d = dir($directory);
if ($d) {
while($entry=$d->read()) {
$path_assoluto = $directory.$entry;
if(is_dir($path_assoluto) && $entry != "." && $entry != '..') {
if($debug) {
echo "l'entry :".$path_assoluto." è una directory, richiamo nuovamente readDirRecursive con i parametri (".$entry.",".$filter.");
";
}
$items = array_merge($items, readDirRecursive($path_assoluto, $filter, $debug));
} else {
$add = true;
if($filter) {
$ext = array_pop(explode('.', $path_assoluto));
if(strpos(strtolower($path_assoluto), $filter) === false) {
$add = false;
}
}
if($add) {
$items[] = $path_assoluto;
} elseif($debug) {
echo "l'entry :".$entry." non soddisfa il filtro
";
}
}
}
$d->close();
sort($items);
return $items;
} elseif($debug) {
echo "Non riesco a leggere la directory : ".$directory."
";
}
}
$items = readDirRecursive($directory, $filter, 0);
echo "<pre>";
print_r($items);
echo "</pre>";
?>
Se vuoi vedere il debug passa come 3 argomento 1.
Il filtro viene effettuato sulle estensioni, e non su tutto il file.
Ciao