A volte sorge la necessità di scrivere in PHP un codice che mostri la lista dei file e dei cataloghi contenuti in una directory… A quale scopo? Fondamentalmente, per non scrivere e aggiornare manualmente troppi elenchi (forse dovendoli pure linkare).
Oggi condivido, senza troppi commenti, con i lettori ben cinque metodi validi.
Il metodo № 1. Visualizzare la lista dei file con la stessa estensione (per esempio *.php):
$filelist = glob("*.php"); foreach ($filelist as $filename){ echo $filename." e le sue dimnsioni: ".filesize($filename)." byte<br>"; }
È possibile visualizzare la lista dei file con qualsiasi estensione: è sufficiente sostituire php con quella desiderata nella prima riga del codice appena visto.
Inoltre, per esempio, è possibile visualizzare la lista dei file con i nomi parzialmente uguali. Per farlo, indicare nella funzione glob() la parte comune: glob("xyz*.doc") cercherà quindi i file doc con i nomi che iniziano per xyz.
Il metodo № 2. Visualizzare tutti i file della cartella corrente
$path = "."; $filelist = array(); if($handle = opendir($path)){ while($entry = readdir($handle)){ echo $entry."<br>"; } closedir($handle); }
La cosa in più da sapere sul codice già facile è la possibilità (opzionale) di indicare il nome di una cartella al posto del punto nella espressione $path="." (quindi per vedere la lista dei file della cartella files scrivere $path="files").
Il metodo № 3. L’uso della funzione scandir()
$path = scandir("files"); foreach($path as $k){ echo $k."<br>"; }
La funzione scandir() sa solamente interpretare il percorso verso il «posto» dove cercare i file. Leggendo l’array è possibile avere l’elenco dei file e delle cartelle. Per cercare nella stessa cartella della funzione indicare scandir(".") – con il punto.
Il metodo № 4. L’uso di una funzione con il ciclo for
function nav($dir){ if(is_dir($dir)){ $files = scandir($dir); array_shift($files); // удаляем из массива '.' array_shift($files); // удаляем из массива '..' for($i=0; $i<sizeof($files); $i++){ $len = $files[$i]; echo $len."<br>"; } } } $dir = "files"; nav($dir);
Potete notare anche voi che il nome della directory è contenuto nella variabile dir. Dall’array vengono eliminati »." e «..».
Il metodo № 5. Quello ritenuto il migliore da molti programmatori.
$dir = "files"; if($handle = opendir($dir)){ while(false !== ($file = readdir($handle))) { if($file != "." && $file != ".."){ echo $file."<br>"; } } }
Potete notare anche voi che il nome della directory è contenuto nella variabile dir.
Ma in realtà non esistono i metodi migliori. Esistono i metodi più o meno adatti alle necessità concrete del momento.
Scegliete pure il metodo che vi sembra più facile da adattare al proprio progetto.