Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

PHP glob: Dateien nach Muster suchen und auflisten

Sie befinden sich: Home > Php Tutorial > PHP glob: Dateien nach Must...

PHP glob: Dateien nach Muster suchen und auflisten


Eintrag am:  07.04.2026
Hits / Besucher:  32
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die PHP-Funktion glob() durchsucht ein Verzeichnis nach Dateien, deren Namen einem bestimmten Muster entsprechen. Anders als scandir() liefert sie direkt die vollständigen Pfade zurück und ermöglicht den Einsatz von Wildcards wie Sternchen, Fragezeichen und eckigen Klammern. Ob das Auflisten aller PHP-Dateien in einem Projektordner, das gezielte Filtern nach Dateiendungen oder das rekursive Durchsuchen verschachtelter Verzeichnisse: glob() bietet eine kompakte und leistungsfähige Lösung für diese Aufgaben. In diesem Tutorial werden die Syntax, alle verfügbaren Wildcards und Flags sowie praktische Anwendungsbeispiele Schritt für Schritt vorgestellt.

Illustration zum Tutorial: PHP glob: Dateien nach Muster suchen und auflisten

Bevor die Wildcards und Flags im Detail behandelt werden, lohnt sich ein Blick auf die grundlegende Arbeitsweise der Funktion.

Was macht glob()?

Die Funktion glob() nimmt ein Suchmuster (Pattern) entgegen und gibt ein Array mit allen passenden Dateinamen und Pfaden zurück. Bei keinem Treffer ist das Ergebnis ein leeres Array. Im Fehlerfall gibt die Funktion false zurück.

<?php

/* Grundlegende Syntax */
$dateien = glob(string $pattern, int $flags = 0);

/* Alle PHP-Dateien im aktuellen Verzeichnis suchen */
$php_dateien = glob("*.php");

print_r($php_dateien);
/*
Array
(
[0] => index.php
[1] => config.php
[2] => functions.php
)
*/

Ein wichtiger Punkt: glob() findet standardmäßig keine versteckten Dateien, also solche, deren Name mit einem Punkt beginnt. Außerdem liefert die Funktion die vollständigen Pfade relativ zum angegebenen Muster, was die Weiterverarbeitung mit Funktionen wie file_get_contents() oder unlink() erleichtert.

Wildcards und Muster

Die Stärke von glob() liegt in der Mustererkennung. Drei Arten von Wildcards stehen zur Verfügung, die sich beliebig kombinieren lassen.

Sternchen (*) für beliebige Zeichen

Das Sternchen steht für eine beliebige Anzahl von Zeichen, einschließlich null Zeichen. Es ist die am häufigsten verwendete Wildcard.

<?php

/* Alle Dateien mit der Endung .log */
$logs = glob("/var/log/*.log");

/* Alle Dateien, die mit "backup" beginnen */
$backups = glob("/daten/backup*");

/* Alle Dateien in einem Unterverzeichnis */
$bilder = glob("uploads/bilder/*");

Fragezeichen (?) für ein einzelnes Zeichen

Das Fragezeichen steht für genau ein beliebiges Zeichen. Es eignet sich besonders gut, wenn die Länge des Dateinamens bekannt ist, aber einzelne Stellen variieren.

<?php

/* Dateien wie bild1.png, bild2.png, bildA.png */
$bilder = glob("bild?.png");

/* Dateien mit zweistelliger Nummer: log01.txt bis log99.txt */
$logs = glob("log??.txt");

Eckige Klammern [] für Zeichenbereiche

Mit eckigen Klammern lässt sich ein Bereich oder eine Menge erlaubter Zeichen an einer bestimmten Stelle definieren. Das ermöglicht eine präzisere Filterung als das Fragezeichen.

<?php

/* Nur Dateien mit Ziffern: datei0.txt bis datei9.txt */
$dateien = glob("datei[0-9].txt");

/* Nur Kleinbuchstaben a bis f */
$hex = glob("block_[a-f].dat");

/* Bestimmte Zeichen: nur a, b oder c */
$auswahl = glob("teil_[abc].csv");

Das folgende Diagramm zeigt, wie glob() ein Muster verarbeitet und das Ergebnis liefert.

flowchart TD
    A["glob() mit Pattern aufrufen"] --> B["Wildcards im Pattern auswerten"]
    B --> C["Verzeichnis durchsuchen"]
    C --> D{"Treffer gefunden?"}
    D -- "Ja" --> E["Array mit vollständigen Pfaden"]
    D -- "Nein" --> F["Leeres Array"]
    E --> G["Optionale Sortierung anwenden"]
    G --> H["Ergebnis-Array zurückgeben"]
    F --> H

Die wichtigsten Flags

Der zweite Parameter von glob() nimmt Flags entgegen, die das Verhalten der Funktion steuern. Mehrere Flags lassen sich mit dem Oder-Operator kombinieren.

GLOB_BRACE für mehrere Muster

Mit GLOB_BRACE können mehrere Muster in geschweiften Klammern zusammengefasst werden. Das erspart mehrfache Aufrufe von glob().

<?php

/* Mehrere Dateiendungen gleichzeitig suchen */
$medien = glob("uploads/*.{jpg,png,gif,webp}", GLOB_BRACE);

foreach ($medien as $datei) {
echo $datei . "\n";
}

GLOB_ONLYDIR für nur Verzeichnisse

Das Flag GLOB_ONLYDIR beschränkt die Ergebnisse auf Verzeichnisse. Dateien werden dabei ignoriert.

<?php

/* Nur Unterverzeichnisse auflisten */
$ordner = glob("projekte/*", GLOB_ONLYDIR);

print_r($ordner);
/*
Array
(
[0] => projekte/webshop
[1] => projekte/blog
[2] => projekte/api
)
*/

GLOB_NOSORT für Performance

Standardmäßig sortiert glob() die Ergebnisse alphabetisch. Mit GLOB_NOSORT entfällt dieser Schritt, was bei Verzeichnissen mit vielen Dateien spürbar schneller sein kann.

<?php

/* Ohne Sortierung für bessere Performance */
$alle = glob("/var/data/*.csv", GLOB_NOSORT);

/* Flags kombinieren */
$ergebnis = glob("assets/*.{css,js}", GLOB_BRACE | GLOB_NOSORT);

Praktische Beispiele

Die folgenden Codebeispiele zeigen typische Einsatzszenarien, die in realen Projekten häufig vorkommen.

<?php

/* Alle Cache-Dateien löschen */
$cache_dateien = glob("cache/*.tmp");

foreach ($cache_dateien as $datei) {
unlink($datei);
}

echo count($cache_dateien) . " Cache-Dateien gelöscht.";

/* Neueste Log-Datei ermitteln */
$logs = glob("logs/*.log");
$neueste = "";
$max_zeit = 0;

foreach ($logs as $log) {
$zeit = filemtime($log);
if ($zeit > $max_zeit) {
$max_zeit = $zeit;
$neueste = $log;
}
}

echo "Neueste Log-Datei: " . $neueste;

glob() rekursiv einsetzen

Die Funktion glob() durchsucht standardmäßig nur eine einzelne Verzeichnisebene. Für eine rekursive Suche über mehrere Ebenen hinweg lässt sich eine eigene Funktion schreiben, die glob() wiederholt aufruft.

<?php

function glob_rekursiv($pattern, $flags = 0) {
$dateien = glob($pattern, $flags);

/* Alle Unterverzeichnisse durchsuchen */
$verzeichnisse = glob(
dirname($pattern) . "/*",
GLOB_ONLYDIR | GLOB_NOSORT
);

foreach ($verzeichnisse as $verzeichnis) {
$unterergebnis = glob_rekursiv(
$verzeichnis . "/" . basename($pattern),
$flags
);
$dateien = array_merge($dateien, $unterergebnis);
}

return $dateien;
}

/* Alle PHP-Dateien im Projektbaum finden */
$alle_php = glob_rekursiv("src/*.php");

echo "Gefunden: " . count($alle_php) . " PHP-Dateien\n";

foreach ($alle_php as $datei) {
echo $datei . "\n";
}

Diese rekursive Variante nutzt GLOB_ONLYDIR, um zunächst alle Unterverzeichnisse zu ermitteln, und wendet das ursprüngliche Muster dann auf jede Ebene an. Für sehr tiefe Verzeichnisstrukturen kann alternativ RecursiveDirectoryIterator aus der SPL verwendet werden.

glob() vs. scandir()

Beide Funktionen listen Dateien in einem Verzeichnis auf, unterscheiden sich aber in wesentlichen Punkten. Die Funktion glob() gibt vollständige Pfade zurück und unterstützt Wildcards direkt. Die Funktion scandir() liefert nur Dateinamen ohne Pfad und gibt immer alle Einträge zurück, einschließlich der Punktverzeichnisse . und ...

<?php

/* glob() liefert gefilterte, vollständige Pfade */
$ergebnis_glob = glob("bilder/*.jpg");
/* ["bilder/foto1.jpg", "bilder/foto2.jpg"] */

/* scandir() liefert alle Einträge ohne Pfad */
$ergebnis_scan = scandir("bilder");
/* [".", "..", "foto1.jpg", "foto2.jpg", "thumbs"] */

Die Wahl zwischen beiden Funktionen hängt vom Anwendungsfall ab. Wenn nur Dateien eines bestimmten Typs benötigt werden, ist glob() die bessere Wahl, da sie das Filtern bereits übernimmt. Wenn hingegen alle Einträge eines Verzeichnisses inklusive Unterordner benötigt werden, bietet scandir() den direkteren Weg.

Fazit

Die Funktion glob() ist ein vielseitiges Werkzeug zum Suchen und Auflisten von Dateien in PHP. Mit Wildcards wie dem Sternchen, dem Fragezeichen und eckigen Klammern lassen sich Suchmuster präzise formulieren. Die Flags GLOB_BRACE, GLOB_ONLYDIR und GLOB_NOSORT erweitern die Möglichkeiten zusätzlich. Im Vergleich zu scandir() bietet glob() den Vorteil der integrierten Mustersuche und der vollständigen Pfadangaben im Ergebnis. Für rekursive Suchen lässt sich die Funktion mit wenigen Zeilen Code in eine eigene Hilfsfunktion einbetten, die beliebig tiefe Verzeichnisstrukturen durchläuft.

 


Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.