Mr. Webmaster Menu
  • Home
  • Cerca
  • Didattica
    • A
    • Android
    • Apache
    • Apple
    • ASP
    • ASP.Net
    • C
    • Cloud
    • CMS
    • CSS
    • D
    • Database
    • E
    • Editor
    • G
    • Grafica
    • H
    • Hosting
    • HTML
    • J
    • Java
    • Javascript
    • jQuery
    • L
    • Leggi e Fisco
    • Linux
    • M
    • Mobile
    • MySQL
    • N
    • NET Framework
    • P
    • Photoshop
    • PHP
    • Primi Passi
    • Programmazione
    • R
    • Reti
    • Ruby
    • S
    • Sicurezza
    • Social Media
    • SQL
    • W
    • Web Design
    • Web Marketing
    • Web Server
    • Windows
    • WordPress
    • X
    • XML
    • Di tendenza
    • Android Studio
    • Bootstrap
    • GDPR
    • Hosting Wordpress
    • Node.js
    • Registrazione Domini
  • Download
    • Software
    • Script
    • Plugin CMS
    • Flash Movies
    • Sound Loops
    • Templates
    • Web Grafica
    • Font Gratis
  • Risorse
    • SEO Tools
    • WebApps
  • News
  • Blog
  • Forum
  • Network
    • Toolset.it
    • SiteMarket.it
    • Codalo.it
  • Corsi on-line
Mr. Webmaster → PHP → Snippet → Filesystem → Estrarre un file a caso da una data cartella

Estrarre un file a caso da una data cartella

  • CommentaScrivi un commento
  • ForumDiscuti sul forum
  • PrecedenteCopia ricorsiva (copia il contenuto della cartella e delle sottocartelle)
  • SuccessivoMostra il contenuto di una cartella
  • Pubblicato il
  • 27/11/2013
  • Autore
  • Redazione

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');

Naviga tra i contenuti

← Copia ricorsiva (copia il contenuto della cartella e delle sottocartelle)
→ Mostra il contenuto di una cartella

Commenti

I commenti sono sottoposti alle linee guida di moderazione e prima di essere visibili devono essere approvati da un moderatore.
  • Facebook
  • Twitter
  • Google+
  • YouTube
  • Feed RSS
Frequenta i nostri corsi
  • Corso LinuxCorso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso MySQLCorso MySQL
    Gestione del database open-source. A partire da 39 €
  • Corso PHPCorso PHP
    Creare siti web dinamici avanzati con PHP e MySQL. A partire da 49 €
Vedi anche...
  • Trasformare i byte in unità di misura human readable
  • Calcolare la dimensione di una cartella
  • Convertire i Bytes usando i prefissi binari
  • Copia ricorsiva (copia il contenuto della cartella e delle sottocartelle)
  • Ricavare l'estensione di un file con PHP
Guide
  • Guida CodeIgniter
  • Guida PHP
  • Guida PHP e MySQL
  • Guida PhpMyAdmin
Mr. Webmaster
  • RSS
  • Contattaci
  • Torna su
IKIweb
© 2003 - 2019 Mr. Webmaster
Mr. Webmaster ® è un marchio registrato.
E' vietata ogni forma di riproduzione.
IKIweb Internet Media S.r.l. - P.IVA 02848390122

Parliamo di noi: chi siamo / cronologia
Contatti: pubblicità / contattaci / segnala abusi
Note Legali: condizioni d'uso / privacy / cookie
Altro: sondaggi / feed