Estrarre un file a caso da una data cartella
Un'interessante funzione PHP che consente di estrarre un file a caso da una data cartella eventualmente anche impostando un filtro sull'estensione:
function random_file($folder, $extensions='.*'){
$folder = trim($folder);
$folder = ($folder == '') ? './' : $folder;
if (!is_dir($folder)) die('La cartella specificata non è valida!');
$files = array();
if ($dir = @opendir($folder)){
while($file = readdir($dir)){
if (!preg_match('/^\.+$/', $file) and
preg_match('/\.('.$extensions.')$/', $file)){
$files[] = $file;
}
}
closedir($dir);
}else{
die('NON posso aprire la cartella "'.$folder.'"');
}
if (count($files) == 0){
die('Nessun file trovato');
}
mt_srand((double)microtime()*1000000);
$rand = mt_rand(0, count($files)-1);
if (!isset($files[$rand])){
die('Si è verificato un errore di programmazione!! Ummm... molto strano!');
}
return $folder . $files[$rand];
}
Si noti che il primo parametro è obbligatorio (e consiste nel path della cartella da esplorare) mentre il secondo parametro (filtro estensioni) è facoltativo e se non valorizzato consentirà di recuperare un file qualsiasi a prescindere dalla sua estensione.
Continua dopo la pubblicità...
Esempio di utilizzo:
// il filtro "jpg|png|gif" consente di selezionare solo i file d'immagine
// escludendo tutti i file che hanno estensioni differenti
echo random_file('files/','jpg|png|gif');