§ 24. La lista dei file e dei cataloghi di una directory

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.