English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial lernen Sie, wie man mit PHP Verzeichnisse oder Ordner verarbeitet.
Im vorherigen Kapitel haben Sie gelernt, wie man in PHP mit Dateien arbeitet. Ebenso ermöglicht PHP, dass Sie auf Verzeichnisse auf dem Dateisystem zugreifen, z.B. können Sie Verzeichnisse öffnen und deren Inhalte lesen, Verzeichnisse erstellen oder löschen, alle Dateien im Verzeichnis auflisten und so weiter.
Du kannst die Funktion mkdir() verwenden, um einen neuen leeren Verzeichnis zu erstellen, indem du den Pfad und den Namen des zu erstellenden Verzeichnisses als Parameter übergeben, wie im folgenden Beispiel gezeigt:
<?php //Verzeichnispfad $dir = "testdir"; // Überprüfen, ob der Ordner existiert if(!file_exists($dir)){ //Versuche, Verzeichnis zu erstellen if(mkdir($dir)){ echo "Verzeichniserstellung erfolgreich."; } else { echo "Fehler: Verzeichnis kann nicht erstellt werden."; } } else { echo "Fehler: Verzeichnis existiert bereits."; } ?>
Um die Funktion mkdir() zu arbeiten, muss der Elternverzeichnis des im Parameter angegebenen Verzeichnispfades bereits existieren, zum Beispiel, wenn du den Verzeichnispfad testdir/subdir ist testdir Auf andere Weise erzeugt PHP einen Fehler.
Du kannst die Funktion copy() in PHP aufrufen und die Quell- und Zielpfade der Datei als Parameter übergeben, um eine Datei von einem Ort in einen anderen zu kopieren. Wenn die Zieldatei bereits existiert, wird sie überschrieben. Dies ist ein Beispiel, um eine Kopie des Datei "example.txt" im Sicherungsordner zu erstellen.
<?php //Pfad zur Quelldatei $file = "example.txt"; //Pfad zum Zieldatei $newfile = "backup/example.txt"; // Überprüfe, ob Datei existiert if(file_exists($file)){ //Versuche, Datei zu kopieren if(copy($file, $newfile)){ echo "Dateikopie erfolgreich."; } else { echo "Fehler: Datei kann nicht kopiert werden."; } } else { echo "Fehler: Datei existiert nicht."; } ?>
Um dieses Beispiel zum Laufen zu bringen, muss bereitsSicherungZielverzeichnis und Quelldatei "example.txt". Andernfalls wird PHP einen Fehler erzeugen.
Du kannst die Funktion scandir() in PHP verwenden, um Dateien und Verzeichnisse im angegebenen Pfad anzuzeigen.
Nun werden wir eine benutzerdefinierte Funktion erstellen, die alle Dateien im Verzeichnis rekursiv auflistet. Dieser Skript ist sehr nützlich, wenn Sie tief verschachtelte Verzeichnisstrukturen haben.
<?php //Definiere eine Funktion, um die Dateien im Verzeichnis auszugeben function outputFiles($path){ //Überprüfen, ob der Ordner existiert if(file_exists($path) && is_dir($path)){ //Durchsucht die Dateien im Verzeichnis $result = scandir($path); // Filtert die aktuelle (.) und den Elternverzeichnis(..) heraus $files = array_diff($result, array('.', '..')); if(count($files) > 0){ //durchlaufe das Array der neu abgestimmten Pfade foreach($files as $file){ if(is_file("$path/$file")){ //Dateinamen anzeigen echo $file . "<br>"; } else if(is_dir("$path/$file")){ //Falls der Ordner gefunden wird, wird die Funktion rekursiv aufgerufen outputFiles("$path/$file"); } } } else { echo "Fehler: Datei im Verzeichnis nicht gefunden."; } } else { echo "Fehler: Der Ordner existiert nicht."; } } //Aufruf der Funktion outputFiles("mydir"); ?>
Bei der Verarbeitung von Verzeichnissen und Dateistrukturen können Sie möglicherweise nach bestimmten Dateitypen im Verzeichnis suchen, z.B. nur Dateien .text oder .png-Dateien auflisten. Dies können Sie leicht mit der PHP glob()-Funktion tun, die Dateien nach Mustern abgleicht.
Das folgende Beispielcode des PHPs wird documents Verzeichnisse und listen alle Dateien mit der .text-Erweiterung auf. Es wird keine Durchsuchung der Unterordner durchgeführt.
<?php /* Durchsuchen des Verzeichnisses und Durchlaufen des Zyklus, um das Array mit übereinstimmenden Dateien zurückzugeben */ foreach(glob("documents/*.txt") as $file){ echo basename($file) . "(Größe: " . filesize($file) . " Bytes)" . "<br>"; } ?>
Die glob()-Funktion kann auch verwendet werden, um alle Dateien in einem Verzeichnis oder in seinen Unterordnern zu finden. Der in diesem Beispiel definierte Funktion listet alle Dateien im Verzeichnis rekursiv auf, genau wie wir dies im obigen Beispiel mit der scandir()-Funktion tun.
<?php //Funktion zur Ausgabe der Dateien im Verzeichnis definieren function outputFiles($path){ //Überprüfen, ob der Ordner existiert if(file_exists($path) && is_dir($path)){ // Suchen der Dateien im Verzeichnis $files = glob($path ."/*); if(count($files) > 0){ //Durchsuchen der neu angepassten Array foreach($files as $file){ if(is_file("$file")){ //Nur Dateinamen anzeigen echo basename($file) . "<br>"; } else if(is_dir("$file")){ //Falls der Ordner gefunden wird, wird die Funktion rekursiv aufgerufen outputFiles("$file"); } } } else { echo "Fehler: Dieses Dateityp kann im Ordner nicht gefunden werden."; } } else { echo "Fehler: Der Ordner existiert nicht."; } } //Aufruf der Funktion outputFiles("mydir"); ?>