In PHP wird die Scandir -Funktion verwendet, um eine Liste von Dateien und Verzeichnissen in einem bestimmten Verzeichnis zu erhalten. Es gibt ein Array zurück, das die Namen aller Dateien und Unterverzeichnisse im angegebenen Verzeichnis enthält. Die grundlegende Verwendung von Scandir ist sehr einfach, bietet jedoch nicht direkt die Identifizierung, die Dateien von Verzeichnissen unterscheidet. Wir können jedoch leicht den Typ jedes Eintrags identifizieren, indem wir andere Funktionen kombinieren.
Die Syntax der Scandir -Funktion lautet wie folgt:
<span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$directory</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$sorting_order</span></span><span> = SCANDIR_SORT_ASCENDING [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> ]] )
</span></span>$ Verzeichnis : Der Pfad zum Scannen des Verzeichnisses.
$ sorting_order : Gibt die Sortierreihenfolge an, die sich der Aufstiegsordnung ( scandir_sort_ascending ) befindet.
$ context : Gibt den Kontextstrom optional an.
Scandir gibt ein Array zurück, das den Inhalt eines Verzeichnisses enthält, bei dem es sich normalerweise um den Dateinamen und den Namen des Unterverzeichnisses handelt. Der Rückgabewert enthält die Namen des aktuellen Verzeichnisses ( . ) Und das übergeordnete Verzeichnis ( .. ).
Um zwischen Dateien und Verzeichnissen zu unterscheiden, die von Scandir zurückgegeben wurden, können wir die Funktionen is_file () und is_dir () verwenden. Sie werden verwendet, um festzustellen, ob ein bestimmter Pfad eine Datei oder ein Verzeichnis ist. Durch Durchqueren der Ergebnisse von Scandir können wir den Typ jedes Eintrags leicht identifizieren.
Hier ist ein Beispiel, das zeigt, wie Sie Scandir verwenden, um eine Verzeichnisliste zu erhalten und Dateien und Verzeichnisse von is_file () und is_dir () zu beurteilen:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/directory'</span></span><span>; </span><span><span class="hljs-comment">// Stellen Sie das Verzeichnis auf Scannen ein</span></span><span>
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$files</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
</span><span><span class="hljs-comment">// über etwas springen "." Und ".."</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file</span></span><span> == </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-variable">$file</span></span><span> == </span><span><span class="hljs-string">'..'</span></span><span>) {
</span><span><span class="hljs-keyword">continue</span></span><span>;
}
</span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-variable">$directory</span></span><span> . DIRECTORY_SEPARATOR . </span><span><span class="hljs-variable">$file</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" Es ist ein Verzeichnis\n"</span></span><span>;
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_file</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" Es ist eine Datei\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" Ist ein unbekannter Typ\n"</span></span><span>;
}
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Wir rufen zuerst Scandir ($ Directory) an, um alle Dateien und Verzeichnisse im angegebenen Verzeichnis zu erhalten.
Verwenden Sie , um die zurückgegebene Dateiliste zu durchschleifen.
Für jeden Eintrag ausgeschlossen . und .. zuerst, weil sie das aktuelle Verzeichnis bzw. das übergeordnete Verzeichnis repräsentieren und normalerweise keine weitere Verarbeitung erfordern.
Verwenden Sie dann is_dir () , um zu überprüfen, ob der Eintrag ein Verzeichnis ist. Wenn es sich um ein Verzeichnis handelt, wird die entsprechende Eingabeaufforderung ausgegeben.
Verwenden Sie als nächstes is_file () , um festzustellen, ob es sich um eine Datei handelt. Wenn es sich um eine Datei handelt, wird die entsprechende Eingabeaufforderung ausgegeben.
Wenn keiner der oben genannten Bedingungen erfüllt ist, können wir den Eintrag als eine spezielle Datei (z. B. eine symbolische Verbindung usw.) betrachten.
Angenommen, /Pfad/bis/Ihr/Verzeichnis enthält Folgendes:
Datei1.txt (Datei)
Datei2.Php (Datei)
Subdir1 (Verzeichnis)
Subdir2 (Verzeichnis)
Nach dem Ausführen des oben genannten Code kann die Ausgabe wie folgt sein:
<span><span>file1.txt Es ist eine Datei
file2.php Es ist eine Datei
subdir1 Es ist ein Verzeichnis
subdir2 Es ist ein Verzeichnis
</span></span>Durch die Kombination von Scandir und is_File () und is_dir () können wir die Eintragstypen im Dateisystem problemlos beurteilen und dann Dateien und Verzeichnisse unterscheiden. Scandir selbst liefert keine direkten Identifikationsinformationen, aber die Verwendung mit anderen Dateisystemfunktionen macht diese Aufgabe sehr einfach.