SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=215&group=38
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Auslesen von Verzeichnissen


Zu den wichtigsten Aufgaben der Dateifunktionen gehört das Auslesen der Bestandteile eines Verzeichnisses. Für diese Aufgabe stehen Ihnen folgende Funktionen zur Verfügung:

FunktionBeispielBedeutung
closedir (dir_handle)closedir ($handle);Löscht einen Verweis (Handle) auf ein Verzeichnis.
dir (directory)dir ("/etc");Liefert ein Objekt, das für ein Verzeichnis steht.
opendir (path)opendir ($path);Erzeugt einen Verweis (Handle) auf ein Verzeichnis.
readdir (dir_handle)readdir ($handle);Ermittelt den jeweils nächsten Datei- oder Verzeichnisnamen aus einem Verzeichnis.
rewinddir (dir_handle)rewinddir ($handle);Positioniert den readdir-Zeiger wieder auf dem ersten Eintrag eines Verzeichnisses.
scandir (directory [, sorting_order])scandir ($directory);Listet sämtliche Dateien und Verzeichnisse eines angegebenen Pfads auf. Die Sortierreihenfolge ist alphabetisch aufsteigend. Sollte der optionale Parameter sorting_order verwendet werden, wird die Sortierreihenfolge alphabetisch absteigend sein.


Im Grunde verbergen sich hinter den oben vorgestellten Funktionen zwei Konzepte für den Zugriff auf Verzeichnisse und das Auslesen von Dateien:


Zugriff via Verweise

Einen Verweis erhalten Sie mithilfe der Funktion opendir(). Das folgende Beispiel zeigt, wie Sie Dateien aus einem Verzeichnis auslesen:
<?php

$handle=opendir ('.');
echo "Verzeichnis-Handle: $handle<br>";
echo "Dateien:<br>";

while (false !== ($file = readdir ($handle))) {
  echo "$file<br>";
}

closedir($handle);

?>

Ausgabe
Verzeichnis-Handle: Resource id #2
Dateien:
.
..
konstanten.php

Beachten sie, dass readdir() auch die Einträge "." und ".." zurückgibt. Wollen Sie das nicht, müssen Sie sie ausschließen:

<?php

$handle=opendir ('.');
echo "Verzeichnis-Handle: $handle<br>";
echo "Dateien:<br>";

while ($file = readdir ($handle)) {
  if ($file != "." && $file != "..") {
    echo "$file<br>";
  }
}

closedir($handle);

?>

Ausgabe
Verzeichnis-Handle: Resource id #2
Dateien:
konstanten.php
{PSP}Zugriff via Objekt

Kommen wir nun zum zweiten Konzept, nämlich dem Zugriff mithilfe des dir-Objekts. Es handelt sich hierbei um ein Pseudo-Objekt, d. h. eine Mischung aus Funktion und objektorientierter Lösung. Dem Objekt stehen diverse Eigenschaften und Methoden zur Verfügung, welche in folgender Tabelle aufgeführt sind:

FunktionBedeutung
handleDiese Eigenschaft liefert einen Verweis, welcher sich mit den weiter oben vorgestellten Funktionen nutzen lässt.
pathDiese Eigenschaft liefert den Pfad des dir-Objekts.
close()Diese Methode gibt das Objekt wieder frei.
read()Diese Methode liefert bei jedem Aufruf den jeweils nächsten Verzeichniseintrag.
rewind()Diese Methode setzt den internen Zeiger für die read-Operationen wieder auf den ersten Eintrag.


Das Auslesen eines Verzeichnisses entspricht den bereits vorgestellten Beispielen. Lediglich die Syntax stellt sich etwas anders dar:

<?php

$verzeichnis = dir(".");
echo "Verzeichnis-Handle: $verzeichnis<br>";
echo "Dateien:<br>";

while ($file = $verzeichnis->read()) {
  echo "$file<br>";
}

$verzeichnis->close();

?>

Ausgabe
Verzeichnis-Handle: Object id #1
Dateien:
.
..
konstanten.php

Hinweis: Dieses Pseudo-Objekt als spezielle Syntax wird vor allem beim objektorientierten Anwendungen eingesetzt.