Signatur
Beschreibung
mb_ereg_search_init() bereitet einen String und einen regulären Ausdruck für die wiederholte Suche mit den Funktionen mb_ereg_search(), mb_ereg_search_pos() und mb_ereg_search_regs() vor. Die Funktion setzt den internen Suchzeiger auf den Anfang des Strings zurück und legt den Suchkontext für nachfolgende Aufrufe fest.
Typischerweise wird mb_ereg_search_init() am Beginn einer Suchschleife aufgerufen, um den zu durchsuchenden String festzulegen. Pattern und Optionen können entweder hier oder beim jeweiligen Suchaufruf angegeben werden. Wird kein Pattern übergeben, muss es bei den nachfolgenden Suchfunktionen angegeben werden.
Der Vorteil gegenüber einzelnen mb_ereg()-Aufrufen liegt darin, dass der interne Zustand zwischen den Aufrufen erhalten bleibt und so effizient mehrere aufeinanderfolgende Treffer im selben String gefunden werden können, ohne den String immer wieder neu zu übergeben.
Die verwendete Zeichenkodierung richtet sich nach der internen Kodierung, die über mb_internal_encoding() oder mb_regex_encoding() gesetzt wurde. Diese Funktion ist besonders nützlich bei der Verarbeitung multibyte-kodierter Texte wie UTF-8 oder EUC-JP.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu durchsuchende Multibyte-String, der als Suchgrundlage für nachfolgende Suchoperationen gesetzt wird. | |
| $pattern | string | null | Der reguläre Ausdruck (Multibyte-Regex), nach dem gesucht werden soll. Kann alternativ bei den Suchfunktionen wie mb_ereg_search() angegeben werden. |
| $options | string | null | Optionen für den regulären Ausdruck, z. B. "i" für Groß-/Kleinschreibungs-Unempfindlichkeit oder "m" für mehrzeiligen Modus. Unterstützte Optionen entsprechen denen der mb_ereg()-Familie. |
Rückgabewert
true zurück, wenn die Initialisierung erfolgreich war, andernfalls false.Beispiele
Alle Treffer eines Musters in einem UTF-8-String finden
<?php
mb_internal_encoding('UTF-8');
$text = 'Äpfel, Birnen und Ärger mit Übergängen.';
$pattern = '[ÄÖÜäöü][a-zäöüA-ZÄÖÜ]+';
if (mb_ereg_search_init($text, $pattern)) {
while ($match = mb_ereg_search_regs()) {
echo 'Treffer: ' . $match[0] . PHP_EOL;
}
} else {
echo 'Initialisierung fehlgeschlagen.';
}
Pattern separat bei der Suchfunktion angeben
<?php
mb_internal_encoding('UTF-8');
$text = 'Tokyo, Osaka, Kyoto';
// Initialisierung nur mit String, Pattern wird später angegeben
mb_ereg_search_init($text);
$pattern = '[A-Z][a-z]+';
$found = [];
while ($pos = mb_ereg_search_pos($pattern)) {
$found[] = mb_substr($text, $pos[0], $pos[1]);
}
print_r($found);
// Wichtig · Fallstricke
Hinweis zur Kodierung: Stellen Sie sicher, dass die interne Kodierung über mb_internal_encoding() oder mb_regex_encoding() korrekt gesetzt ist, bevor diese Funktion aufgerufen wird. Andernfalls können multibyte-Zeichen fehlerhaft verarbeitet werden.
Deprecation: Die mb_ereg_*-Funktionen basieren auf der veralteten Oniguruma-Regex-Engine und könnten in zukünftigen PHP-Versionen als veraltet markiert werden. Für neue Projekte kann preg_match() mit dem u-Modifier (UTF-8) eine modernere Alternative darstellen.
Zustandsbehaftet: Da diese Funktion einen globalen internen Zustand setzt, ist sie nicht thread-sicher. Bei gleichzeitigen Aufrufen in Umgebungen mit Threads kann es zu Konflikten kommen.