PROGRAMMIAMO
PHP - File: Directory

Elenco dei nomi di file contenuti in una cartella

In PHP è possibile leggere l'elenco dei file contenuti in una cartella (directory) sul server remoto. Per fare questo occorre:

1) Aprire la cartella associandole un puntatore (in modo analogo a quanto visto con i file):

$puntdir = opendir("nome della cartella comprensivo di percorso");

2) leggere i nomi dei file contenuti nella cartella con l'istruzione readdir:

$nomefile = readdir($puntdir);

3) La istruzione readdir legge un singolo nome di file alla volta e torna false se non ci sono altri nomi da leggere nella cartella corrente. Per leggere tutti i nomi di file occorre un ciclo. Si consideri il seguente esempio completo, in cui viene letto e visualizzato il contenuto della cartella "doc":

<?php
$dir = opendir("doc");
while (($file = readdir($dir)) !== false)
 {
 if ($file != "." && $file != "..")
   echo $file;
 }
closedir($dir);
?>

L'if serve per evitare che vengano visualizzati anche i nomi "." e "..", che rappresentano rispettivamente la cartella corrente e la cartella genitrice della corrente.

La funzione closedir chiude il puntatore associato alla cartella aperta con opendir.

 

Esempio: visualizzazione di tutte le immagini contenute in una cartella

Come esempio di applicazione delle istruzioni per la gestione delle cartelle, vediamo un semplice script che visualizza tutte le immagini contenute nella cartella "immagini":

<?php
$handle = opendir("immagini");
while (false !== ($file = readdir($handle)))
 {

 $estensione = strtolower(substr($file, strrpos($file, "."), strlen($file)-strrpos($file, ".")));

 if($estensione==".jpg" || $estensione==".gif" || $estensione==".bmp"
|| $estensione == ".png")
   echo "<img src='immagini/". $file . "' />";

}
closedir($handle);
?>

L'istruzione

strtolower(substr($file, strrpos($file, "."), strlen($file)-strrpos($file, ".")));

serve per estrarre l'estensione dal nome del file.

 

 

precedente - successiva

Sito realizzato in base al template offerto da
Graphixmania.it - Grafica e non solo
http://www.graphixmania.it