Start · Sprachen · PHP · Referenz · mb_ereg_search_getregs

mb_ereg_search_getregs

Funktion

Gibt die Treffer-Gruppen des letzten Multibyte-Regex-Suchvorgangs als Array zurück.

seit PHP 4.2.0 Kategorie: string

Signatur

mb_ereg_search_getregs(): array|false

Beschreibung

mb_ereg_search_getregs() liefert das Ergebnis des zuletzt durchgeführten Multibyte-Regex-Suchvorgangs (via mb_ereg_search(), mb_ereg_search_pos() oder mb_ereg_search_regs()) als Array. Das Array enthält an Index 0 den vollständigen Treffer sowie an den folgenden Indizes die einzelnen Capture-Gruppen des regulären Ausdrucks.

Diese Funktion ist Teil der Multibyte-Regex-Suchfamilie, die für die Arbeit mit Zeichenketten in Mehrbyte-Kodierungen wie UTF-8 oder EUC-JP ausgelegt ist. Im Gegensatz zur einmaligen Suche ermöglicht die Suchfamilie die schrittweise Iteration durch einen Text, ähnlich wie ein Cursor.

Typischerweise wird zunächst mit mb_ereg_search_init() der Suchstring und das Muster initialisiert, dann mit mb_ereg_search() ein Treffer gefunden, und anschließend können die Treffer-Details mit mb_ereg_search_getregs() abgerufen werden – ohne erneuten Regex-Aufruf.

Wurde noch kein Suchvorgang durchgeführt oder ist keine Mehrbyte-Suche aktiv, gibt die Funktion false zurück.

Rückgabewert

Typ
array|false
Beschreibung

Gibt ein Array zurück, dessen erstes Element (Index 0) den gesamten Treffer-String enthält, gefolgt von den Inhalten der Capture-Gruppen (Index 1, 2, …). Gibt false zurück, wenn kein Treffer vorhanden ist oder kein Suchvorgang vorausging.

Beispiele

Capture-Gruppen nach mb_ereg_search() auslesen

<?php
mb_internal_encoding('UTF-8');

$string = 'Name: Müller, Vorname: Hans';
$pattern = 'Name: (\\w+), Vorname: (\\w+)';

mb_ereg_search_init($string, $pattern);

if (mb_ereg_search()) {
    $regs = mb_ereg_search_getregs();
    echo 'Vollständiger Treffer: ' . $regs[0] . PHP_EOL;
    echo 'Nachname: '            . $regs[1] . PHP_EOL;
    echo 'Vorname: '             . $regs[2] . PHP_EOL;
} else {
    echo 'Kein Treffer gefunden.';
}
Vollständiger Treffer: Name: Müller, Vorname: Hans Nachname: Müller Vorname: Hans

Iterative Suche mit mehreren Treffern

<?php
mb_internal_encoding('UTF-8');

$string = 'Apfel Birne Kirsche';
$pattern = '(\\w+)';

mb_ereg_search_init($string, $pattern);

while (mb_ereg_search()) {
    $regs = mb_ereg_search_getregs();
    echo 'Treffer: ' . $regs[0] . PHP_EOL;
}
Treffer: Apfel Treffer: Birne Treffer: Kirsche

// Wichtig · Fallstricke

Hinweis zur Kodierung: Vor der Verwendung sollte die interne Kodierung mit mb_internal_encoding() korrekt gesetzt sein, damit Mehrbyte-Zeichen (z. B. Umlaute, CJK-Zeichen) zuverlässig verarbeitet werden.

Abhängigkeit vom Zustand: Die Funktion ist zustandsabhängig – sie liefert ausschließlich die Ergebnisse des letzten Suchvorgangs. Parallele oder verschachtelte Suchen können zu unerwarteten Ergebnissen führen, da der interne Cursor global gespeichert wird.

Deprecation: Die gesamte mb_ereg_*-Familie basiert auf der ONIG-Bibliothek und verhält sich teils anders als PCRE (preg_*). Für neue Projekte werden die preg_*-Funktionen mit dem u-Modifikator für Unicode empfohlen.