Verzeichnis rekursiv mit glob()

Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.

home » php » verzeichnis rekursiv mit glob durchsuchen

Was ist glob()

Die PHP-Funktion glob() ist in der Lage Dateinamen oder Verzeichnisse, auf Basis einer RegularExpression, zu suchen bzw. zu maskieren. Als Ergebnis liefert glob() ein iterierbares Objekt zurück (siehe PHP-Doku).

Mit glob() rekursiv suchen

Das folgende Codebeispiel stammt aus dem Flatfile CMS FlightCMS und listet alle Beiträge innerhalb bzw. rekursiv von $dir auf.

foreach (glob($dir.'*', GLOB_ONLYDIR) as $file_name) 
{
    echo 'Verzeichnis: '.$file_name;

    foreach (glob($file_name.'/*.md') as $file_name) 
    {
        if (!stripos($file_name, 'index.md') && !preg_match('{_}', $file_name))
        {
            echo 'Datei: '.$file_name;
        }
    }
}

Rekursiv durchsuchen mit glob()

Die Funktion glob() beginnt in der äußeren Schleife mit dem auslesen der gefundenen Verzeichnisse GLOB_ONLYDIR und übergibt das aktuelle Verzeichnis an die innere Schleife, die dann alle enthaltenen Dateien mit dem Pattern *.md ermittelt.

Der zusätzliche if-Zweig soll dabei lediglich verhindern, das im bereits genannten FlightCMS, index.md und mit beginnendem Unterstrich _ als unsichtbar gekennzeichnete Beiträge aufgelistet werden, diese sollen verborgen bleiben.

Als Ergebnis entsteht etwa die folgende Ausgabe:

  • kategorie-1
    • index.md => wird nicht angezeigt
    • beitrag-1.md
    • beitrag-2.md
    • _beitrag-3.md => wird ebenfalls nicht angezeigt
  • kategorie-2
    • beitrag-a.md
    • beitrag-b.md

Vorteile von glob()

Der größte Vorteil der Funktion glob() liegt auf der Hand, es ist die Einfachheit mit der diese Funktion verwendet werden kann. Es reichen wenige Zeilen Code aus, um komplexe Datelisten zu maskieren und auszugeben - das ist extrem hilfreich.

Nachteile von glob()

Die Funktion glob() ist intern sehr komplex (wer hätte es gedacht) und daher auch nicht sehr performant.

Dem aufmerksamen Leser wid allerdings aufgefallen sein, das der Code nicht unendlich rekursiv im Verzeichnisbaum hinabsteigt, sondern auf eine Stufe begrenzt ist. Es ist aber recht leicht beim Auffinden eines Verzeichnis innerhalb der inneren Schleife einen erneuten Aufruf auf sich selbst zu erzeugen und das neue Verzeichnis mit $dir an die äußere Schleife weiterzugeben.


FlightCMS
2024-01-28
glob,Datei,Verzeichnis,Durchsuchen,Rekursiv
post

Ein eigenes CMS programmieren I.

In diesem mehrteiligen Workshop entwickeln Sie ein eigenes kleines Content Management System mit einer Flatfile Datenbank und Markdown Parser - inkl. Download.

Ein eigenes CMS programmieren II.

In der zweiten Hälfte des Workshops, geht es darum, das kleine CMS noch weiter auszubauen und vollwertig zu machen

WordPress 6 - Das umfassende Handbuch. Über 1.000 Seiten zu WordPress inkl. Themes, Plug-ins, WooCommerce, SEO und mehr - Mit WordPress mehr als nur ein Blog betreiben - es ist auch ein weit verbreitetes Content-Management-System. Im Buch finden Sie das Rundumpaket für jedes Anwendungsszenario: alle Installationen, Entwicklung und Administration eigener Themes und Plugins und Einstieg in HTML und CSS. Als Fortgeschrittener in Sachen WordPress werden Sie viele wertvolle Tipps und Hilfe finden, etwa bei Themen wie Custom Post Types oder Programmieren von Erweiterungen. So sind Sie schnell in der Lage, Ihr Webprojekt zum Erfolg zu bringen.

Wir können mit so genannten Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

Impressum


CMSWorkbench ist ein Tec- und Entwickler-Seite, rund um die Webtechniken der Content Management Systeme.

Datenschutz


Diese Webseite nutzt keine Cookies oder sonstige Speichermechanismen, die einen Rückschluss auf das Leserverhalten zulassen.

Kontakt


Sie können mit der Redaktion oder dem Administrator via eMail unter der Adresse: Kontakt@Oliver-Lohse.de aufnehmen.