Verzeichnis rekursiv mit glob()

home php

JavaScript das umfassende Handbuch. JavaScript objektorientiert lernen und verstehen   -  Ein umfassender Einstieg in JavaScript, viele praktische Beispiele und eine Darstellung auch professioneller Techniken - all das zeichnet dieses unverzichtbare Handbuch aus. Es eignet sich sowohl für Anfänger, die JavaScript von Grund auf lernen, als auch für Fortgeschrittene und Profis, die wissen wollen, wie man moderne, dynamische Webanwendungen entwickelt. Hier finden Sie alle wichtigen Techniken - Ajax, jQuery, Node.js, DOM und mehr. Entdecken Sie die neuesten Trends, Techniken und Entwicklungen bis hin zur Steuerung von Microcontrollern. Machen Sie sich mit Objektorientierung, ECMAScript 21 und funktionaler Programmierung vertraut und profitieren Sie von zahlreichen praxisnahen Beispielen für den sofortigen Einsatz. Das perfekte Lehrbuch für moderne Webentwickler!

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

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

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.


 28.01.2024    Kontakt@Oliver-Lohse.de    glob Datei Verzeichnis Durchsuchen Rekursiv

PHP 8 und MySQL im perfekten Zusammenspiel   -  Dynamische Webseiten mit PHP und MySQL programmieren. Alles, was Sie dafür wissen müssen, steht in diesem Buch. Profitieren Sie von einer praxisorientierten Einführung und lernen Sie alle neuen Sprachfeatures von PHP 8 kennen. Die Autoren Christian Wenz und Tobias Hauser sind erfahrene PHP-Programmierer und Datenbankspezialisten. Sie zeigen Ihnen, wie Sie MySQL und andere Datenbanksysteme effektiv einsetzen. Mit diesem Wissen machen Sie sich rundum fit für dynamische Websites.

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

Weitere passende Beiträge

Fileupload im CMS GetSimple aktivieren

 get-simple  Upload File Datei


Das Flatfile CMS GetSimple hat zunächst den Fileupload deaktiviert. Aktivieren Sie den Upload von Daten wie Bildern u.ä damit Sie Daten hochladen können.

Externen Zugriff auf Logfiles verbieten

 htaccess  Sperren Ordner Verzeichnis Datei


So verbieten Sie den Zugriff auf das Logfile ihrer Webseite in der htaccess

Admin Supportet Filetypes in Bludit

 bludit  File Type Datei


Aus Sicherheitsgründen akzeptiert das CMS Bludit nicht alle Dateitypen zum Upload. Als Single-User im CMS, können Sie weitere Dateitypen freischalten.

Verzeichnisse und Dateien einlesen

 php  Verzeichnis Folder Directory Ordner


Sie können mit PHP ein Verzeichnis mit Ordnern und Dateien einlesen und anzeigen. Der Beitrag zeigt ein kurzes Codesegment mit dem opendir() Befehl aus PHP.

Verzeichnis mit Java anlegen

 java  Verzeichnis Ordner


Legen Sie mit nur 3 Zeile Java-Code ein Verzeichnis, Ordner bzw. Direcktory auf der Festplatte an.

Plugin für Anzeige Inhaltsverzeichnis

 bludit  TOC Inhalt Verzeichnis


Inhaltsverzeichnisse in Beiträgen haben hohe SEO Wirkung. Dieses Bludit Plugin erzeugt für jeden Beitrag ein Inhaltsverzeichnis vor dem Beitragstext.

Plugin Table of Content

 flight-cms  TOC Inhalt Verzeichnis


Automatische Inhaltsverzeichnisse sind in elektronischen Dokumentationen zum Standard geworden, in diesem Code ein einfacher Ansatz.

Impressum


CMSWorkbench.de ist eine reine Entwickler-Webseite und dient vorwiegend als Wissensspeicher für die Entwicklung von CMS

Datenschutz


Die Webseite verwendet keinerlei Tracking- oder Speicher-Mechanismen, die Rückschlüsse auf Ihre IP oder das Leseverhalten zulassen

Affiliate


Wir sind Mitglied im Amazon Partnernet und können mit Affiliate-Links (* den Betrieb der Seite etwas unterstützen, für Sie ist das natürlich kostenlos

Kontakt


Sie können mit uns über eMail Kontakt aufnehmen, schreiben Sie an Kontakt@Oliver-Lohse.de