Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie die Glob-Methode, um alle Dateien in einem Ordner zu durchlaufen
Durchsuchen Sie alle Dateien im Ordner. Im Allgemeinen können Sie zum Durchsuchen die Methoden opendir und readdir verwenden.
Beispiel: Alle PHP-Dateien im angegebenen Verzeichnis finden (Unterordner nicht durchsuchen) , der Code lautet wie folgt:
<code><span><span><?php</span><span>$path</span> = dirname(<span>__FILE__</span>); <span>$result</span> = traversing(<span>$path</span>); print_r(<span>$result</span>); <span><span>function</span><span>traversing</span><span>(<span>$path</span>)</span>{</span><span>$result</span> = <span>array</span>(); <span>if</span>(<span>$handle</span> = opendir(<span>$path</span>)){ <span>while</span>(<span>$file</span>=readdir(<span>$handle</span>)){ <span>if</span>(<span>$file</span>!=<span>'.'</span> && <span>$file</span>!=<span>'..'</span>){ <span>if</span>(strtolower(substr(<span>$file</span>, -<span>4</span>))==<span>'.php'</span>){ array_push(<span>$result</span>, <span>$file</span>); } } } } <span>return</span><span>$result</span>; } <span>?></span></span></code>
Falls verwendetglob-Methode kann den Code durch Durchlaufen von
<code><span><span><?php</span><span>$path</span> = dirname(<span>__FILE__</span>); <span>$result</span> = glob(<span>$path</span>.<span>'/*.php'</span>); print_r(<span>$result</span>); <span>?></span></span></code>
vereinfachen. Beachten Sie, dass glob den Pfad des Pfadsuchergebnisses zurückgibt, z. B. path='/ home/ fdipzone', das obige Beispiel gibt
<code><span>Array</span> ( [<span>0</span>] => <span>/home/</span>fdipzone/a.php [<span>1</span>] => <span>/home/</span>fdipzone/b.php [<span>2</span>] => <span>/home/</span>fdipzone/c.php )</code>
zurück. Dies unterscheidet sich von den von opendir und readdir zurückgegebenen Ergebnissen.
Wenn Sie nur das aktuelle Verzeichnis durchsuchen. Es kann wie folgt geändert werden: glob('*.php');
Glob-Syntaxbeschreibung:
<code>array <span>glob</span> ( string <span>$pattern</span> [, <span>int</span><span>$flags</span> = <span>0</span> ] )</code>
glob() Die Funktion sucht nach allen Dateipfaden, die mit Muster übereinstimmen, gemäß den Regeln, die von der Funktion libc glob() verwendet werden, ähnlich den Regeln, die von allgemeinen Shells verwendet werden. Es wird keine Abkürzungserweiterung oder Parameterersetzung durchgeführt. Glob ist leistungsstark bei der Verwendung des regulären Pfadabgleichs.
Flags Gültige Flags sind:
GLOB_MARK – Fügen Sie jedem zurückgegebenen Element einen Schrägstrich hinzu.
GLOB_NOSORT – Folgen Sie den Dateien, wie sie im Verzeichnis erscheinen. Gibt die zurück ursprüngliche Reihenfolge (nicht sortiert)
GLOB_NOCHECK – Gibt das Muster zurück, das für die Suche verwendet wird, wenn keine Dateien übereinstimmen
GLOB_NOESCAPE – Backslash-Metazeichen ohne Escapezeichen
GLOB_BRACE – erweitert {a,b,c} so, dass es mit „a“, „b“ oder „c“ übereinstimmt
GLOB_ONLYDIR – gibt nur Verzeichniseinträge zurück, die dem Muster
GLOB_ERR – Fehlerinformationen anhalten und lesen (z. B. nicht lesbares Verzeichnis), standardmäßig alle Fehler ignorieren
<code><span><span><?php</span><span>$path</span> = dirname(<span>__FILE__</span>); <span>$result</span> = <span>array</span>(); traversing(<span>$path</span>, <span>$result</span>); print_r(<span>$result</span>); <span><span>function</span><span>traversing</span><span>(<span>$path</span>, &<span>$result</span>)</span>{</span><span>$curr</span> = glob(<span>$path</span>.<span>'/*'</span>); <span>if</span>(<span>$curr</span>){ <span>foreach</span>(<span>$curr</span><span>as</span><span>$f</span>){ <span>if</span>(is_dir(<span>$f</span>)){ array_push(<span>$result</span>, <span>$f</span>); traversing(<span>$f</span>, <span>$result</span>); }<span>elseif</span>(strtolower(substr(<span>$f</span>, -<span>4</span>))==<span>'.php'</span>){ array_push(<span>$result</span>, <span>$f</span>); } } } } <span>?></span></span></code>