Mit PHP ein Verzeichnis mit Ordnern und Dateien einlesen und anzeigen. Der Beitrag zeigt ein kurzes Codesegment.
Manchmal ist es hifreich die Verzeichnisse, also Ordner, eines Directorys einlesen zu können. Das folgende Script liest alles was im aktuellen Pfad steht:
001 <?php 002 $verzeichnis = '.'; // aktuelles Dir. 003 echo '<ol>'; 004 005 if (is_dir ($verzeichnis)) { 006 if ($handle = opendir($verzeichnis)) { 007 while (($file = readdir($handle)) !== false) { 008 echo '<li>Dateiname: '.$file.' (typ) '.filetype($file).'</li>'; 009 } 010 closedir($handle); 011 } 012 } 013 echo '</ol>'; 014 ?>
Es gibt eine Liste mit dem gesamten Inhalt aus und zeigt den Typ (file oder dir) an.
Dateiname: . (typ) dir Dateiname: .. (typ) dir Dateiname: datei1.txt (typ) file Dateiname: datei2.txt (typ) file Dateiname: ordner (typ) dir
Soll zudem ein Unterverzeichnis durchsucht werden, dann muss der vollständige Pfad in filetype() Berücksichtigung finden, es erfolgt ansonsten die Ausgabe eines Fehlers, da filetype() die Source nicht finden kann:
001 <?php 002 $verzeichnis = 'texte'; 003 echo '<ol>'; 004 005 if (is_dir($verzeichnis)) { 006 if ($handle = opendir($verzeichnis)) { 007 while (($file = readdir($handle)) !== false) { 008 echo '<li>Dateiname: '. $file. ' (typ) '. filetype($verzeichnis.'/'.$file).'</li>'; 009 } 010 closedir($handle); 011 } 012 } 013 echo '</ol>'; 014 ?>
Soll das aktuelle '.' und das übergeordnete Verzeichnis '..' bei der Ausgabe ausgeschlossen werden, sollte ein if in Zeile 008 in etwa so angepasst werden:
001 <?php 002 $verzeichnis = 'texte'; 003 echo '<ol>'; 004 005 if (is_dir($verzeichnis)) { 006 if ($handle = opendir($verzeichnis)) { 007 while (($file = readdir($handle)) !== false) { 008 if (filetype($verzeichnis.'/'.$file) == 'dir' && $file != '.' && $file != '..') { 009 echo '<li>Ordner: '. $file.'</li>'; 010 } 011 } 012 closedir($handle); 013 } 014 } 015 echo '</ol>'; 016 ?>
Sofern sich im Verzeichnis texte Ordner befinden, werden diese angezeigt. Dateien werden nicht mehr angezeigt.