English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Grundlagenanleitung

PHP Fortgeschrittene Anleitung

PHP & MySQL

PHP Referenzhandbuch

PHP-Verzeichnisanalyse

In diesem Tutorial lernen Sie, wie man mit PHP Verzeichnisse oder Ordner verarbeitet.

Verzeichnisse in PHP verwenden

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.

Erstelle ein neues Verzeichnis

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.

Kopiere Datei von einem Ort in einen anderen

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.

Zeige alle Dateien im Verzeichnis an

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");
?>		

Liste aller Dateitypen auflisten

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");
?>