Start · Sprachen · PHP · Referenz · mb_regex_set_options

mb_regex_set_options

Funktion

Setzt oder liefert die Standardoptionen für Multibyte-Regex-Funktionen wie <code>mb_ereg</code> und <code>mb_eregi</code>.

seit PHP 4.3.0 Kategorie: string

Signatur

mb_regex_set_options(string $options = ""): string

Beschreibung

mb_regex_set_options ermöglicht es, globale Optionen für die mbregex-Funktionsfamilie zu setzen oder die aktuell aktiven Optionen abzufragen. Diese Optionen beeinflussen das Verhalten von Funktionen wie mb_ereg, mb_eregi, mb_ereg_replace und verwandten Funktionen.

Die Optionen werden als einzelner String übergeben, wobei jedes Zeichen für eine bestimmte Option steht. Mögliche Optionen sind: i (Groß-/Kleinschreibung ignorieren), x (erweiterte Muster), m (Mehrzeilenmodus, . matcht auch Zeilenumbrüche), s (^ und $ matchen Zeilenanfang/-ende), p (kombiniert m und s), l (kleinste Übereinstimmung), n (. matcht keinen Zeilenumbruch) sowie e (ausgewerter Ausdruck in Ersetzungen – veraltet).

Wird kein Argument übergeben oder ein leerer String, gibt die Funktion lediglich die aktuellen Optionen zurück, ohne sie zu ändern. So lässt sich der aktuelle Zustand sicher abfragen, bevor eigene Optionen gesetzt werden.

Diese Funktion ist nützlich, wenn mehrere mbregex-Operationen mit denselben Optionen durchgeführt werden sollen, ohne diese bei jedem Aufruf einzeln angeben zu müssen.

Parameter

Name Typ Default Beschreibung
$options string "" Zeichenkette mit den zu setzenden Regex-Optionen. Jedes Zeichen steht für eine Option (i, x, m, s, p, l, n). Bei leerem String oder fehlendem Argument werden die aktuellen Optionen nur abgefragt, nicht verändert.

Rückgabewert

Typ
string
Beschreibung
Gibt die zuvor aktiven Optionen als String zurück. Bei erstmaliger Abfrage ohne vorherige Änderung wird in der Regel ein leerer String zurückgegeben.

Beispiele

Aktuelle Optionen abfragen

<?php
// Aktuelle Optionen abfragen (ohne etwas zu ändern)
$currentOptions = mb_regex_set_options();
echo 'Aktuelle Optionen: ' . var_export($currentOptions, true) . PHP_EOL;

// Groß-/Kleinschreibung ignorieren aktivieren
$previousOptions = mb_regex_set_options('i');
echo 'Vorherige Optionen: ' . var_export($previousOptions, true) . PHP_EOL;

// Nun matcht mb_ereg ohne explizite Flag case-insensitiv
$result = mb_ereg('hallo', 'HALLO Welt');
var_dump($result);
Aktuelle Optionen: '' Vorherige Optionen: '' bool(true)

Optionen temporär ändern und wiederherstellen

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

// Bisherige Optionen sichern
$savedOptions = mb_regex_set_options('i');

$text = 'Ärger mit Großbuchstaben';
if (mb_ereg('ärger', $text)) {
    echo 'Treffer gefunden (case-insensitiv).' . PHP_EOL;
}

// Ursprüngliche Optionen wiederherstellen
mb_regex_set_options($savedOptions);

echo 'Optionen wiederhergestellt: ' . mb_regex_set_options() . PHP_EOL;
Treffer gefunden (case-insensitiv). Optionen wiederhergestellt: i

// Wichtig · Fallstricke

Sicherheitshinweis: Die Option e (eval in Ersetzungen) ist seit PHP 7.1 als veraltet markiert und wurde in PHP 8.0 entfernt. Sie sollte unter keinen Umständen mit Benutzereingaben verwendet werden, da sie zur Code-Ausführung missbraucht werden kann.

Globaler Zustand: Da die Optionen global gesetzt werden, kann es in komplexeren Anwendungen zu unerwarteten Seiteneffekten kommen. Es empfiehlt sich daher, die aktuellen Optionen vor einer Änderung zu sichern und danach wiederherzustellen.

Die mbregex-Funktionen (mb_ereg etc.) sind grundsätzlich nicht identisch mit den PCRE-Funktionen (preg_match etc.) – sie verwenden die Oniguruma-Bibliothek mit eigener Syntax. Für neue Projekte werden häufig die PCRE-Funktionen empfohlen.