Aktueller Standort: Startseite> Neueste Artikel> Wie kann ich die Scandir -Funktion verwenden, um versteckte Dateien aufzulisten? Lehren Sie Ihnen, wie Sie es Schritt für Schritt implementieren können

Wie kann ich die Scandir -Funktion verwenden, um versteckte Dateien aufzulisten? Lehren Sie Ihnen, wie Sie es Schritt für Schritt implementieren können

gitbox 2025-09-02

In PHP ist die Scandir -Funktion eine sehr häufige Funktion, die alle Dateien und Ordner in einem Verzeichnis auflistet. Standardmäßig werden versteckte Dateien (Dateien oder Ordner beginnend mit Punkten ) nicht aufgeführt. Dies kann uns in einigen Fällen Unannehmlichkeiten verursachen, z. B. wie machen wir dies, wenn wir alles in einem Verzeichnis auflisten müssen (einschließlich versteckter Dateien)? In diesem Artikel werden Sie Schritt für Schritt vorgenommen, um zu verstehen, wie Sie die SCANDIR -Funktion verwenden, um versteckte Dateien aufzulisten.

1. Einführung in die Scandir -Funktion

Die grundlegende Syntax der Scandir -Funktion lautet wie folgt:

 <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-variable">$sorting_order</span></span><span>);
</span></span>
  • $ verzeichnis : Gibt den Verzeichnispfad an, für den die Datei aufgeführt werden muss.

  • $ sorting_order : Optional, Geben Sie die Sortiermethode an, die Standardeinstellung ist aufsteigender Reihenfolge.

Diese Funktion gibt ein Array zurück, das die Namen von Dateien und Ordnern im Verzeichnis enthält. Rückgabe falsch , wenn keine Zugriffsgenehmigung vorliegt oder das Verzeichnis nicht vorhanden ist.

2. Standardmäßig listet Scandir versteckte Dateien nicht auf

Wenn wir den folgenden Code ausführen:

 <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-string">'/path/to/directory'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>);
</span></span>

Das Ergebnis kann eine Ausgabe sein, die dem folgenden ähnelt:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; .
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; ..
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; file1.txt
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; folder1
    [</span><span><span class="hljs-meta">4</span></span><span>] =&gt; file2.txt
)
</span></span>

Wie Sie sehen können, sind die versteckten Dateien im Verzeichnis (z. B. .Env -Dateien) nicht aufgeführt, sondern nur das aktuelle Verzeichnis . und das übergeordnete Verzeichnis .. sind aufgeführt.

3. Wie liste ich versteckte Dateien auf?

Um die Scandir -Liste versteckte Dateien zu erstellen, können wir dies auf zwei Arten tun: Einer besteht darin, eine benutzerdefinierte Filtermethode zu verwenden, und das andere ist zu filtern, indem das von Scandir zurückgegebene Array kombiniert wird.

Methode 1: Benutzerdefinierte Filterung

Wir können einen Filter anpassen und manuell prüfen, ob die Dateinamen, die von Scandir gestartet sind . , und entscheiden Sie dann, ob sie sie basierend auf den Bedürfnissen halten sollen.

 <span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/directory'</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-comment">// verwenden array_filter Filtern Sie versteckte Dateien heraus</span></span><span>
</span><span><span class="hljs-variable">$allFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>, function(</span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>[</span><span><span class="hljs-number">0</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> &amp;&amp; </span><span><span class="hljs-variable">$file</span></span><span> !== </span><span><span class="hljs-string">'..'</span></span><span>;
});

</span><span><span class="hljs-comment">// Alle Dateien und Ordner ausgeben(Enthält versteckte Dateien)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$allFiles</span></span><span>);
</span></span>

In diesem Beispiel haben wir Array_filter verwendet, um Dateien auszuführen, beginnend mit (d. H. Versteckten Dateien) und sicherstellen, dass die. und .. Verzeichnisse sind nicht enthalten.

Methode 2: Die Kombination von Scandir gibt die Funktion der Ergebnisse und Glob zurück

Eine weitere übliche Praxis besteht darin, eine Glob -Funktion in Verbindung mit der Methode zu verwenden, mit der wir bestimmte Arten von Dateien, einschließlich versteckter Dateien, durch Musteranpassung auflisten können.

 <span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/directory'</span></span><span>;
</span><span><span class="hljs-variable">$allFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</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-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span> . </span><span><span class="hljs-string">'/.*'</span></span><span>));

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$allFiles</span></span><span>);
</span></span>

Auf diese Weise listet GLIpl alle versteckten Dateien auf, die dem Muster übereinstimmen ( d. H. Dateien, die mit.) Stimmen und mit den von Scandir zurückgegebenen Ergebnissen verschmelzen.

4. Filtern und verarbeiten Sie die zurückgegebenen Dateien

Wenn Sie mehr in den aufgelisteten versteckten Dateien durchführen möchten, z. B. das Ausschluss bestimmter Dateien oder die Sortierdateien, können Sie das von Scandir zurückgegebene Array verarbeiten.

Zum Beispiel alle versteckten Dateien ausschließen, beginnend mit .git :

 <span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/directory'</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-variable">$filteredFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>, function(</span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>] !== </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">'.git'</span></span><span>) !== </span><span><span class="hljs-number">0</span></span><span>;
});

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filteredFiles</span></span><span>);
</span></span>

5. Zusammenfassung

Mit den beiden oben genannten Methoden können Sie die SCANDIR -Funktion flexibel verwenden, um versteckte Dateien aufzulisten. Unabhängig davon, ob Sie benutzerdefinierte Filtermethoden verwenden oder Glob -Funktionen kombinieren, können Sie alle Dateien und Ordner im Verzeichnis erfolgreich erhalten, einschließlich dieser versteckten Dateien in PHP. In der tatsächlichen Entwicklung können Sie eine geeignete Möglichkeit für die Behandlung von versteckten Dateien erhalten, die Ihnen eine bessere Kontrolle über das Lesen und Betrieb von Dateien erhalten.