Signatur
Beschreibung
mb_regex_encoding steuert, welche Zeichenkodierung die Multibyte-Regex-Engine intern nutzt. Wird kein Argument übergeben, gibt die Funktion die aktuell eingestellte Kodierung als Zeichenkette zurück. Wird ein gültiger Kodierungsname übergeben, setzt die Funktion diese Kodierung und gibt true zurück.
Die Einstellung gilt für alle Funktionen der mb_ereg-Familie (mb_ereg, mb_eregi, mb_ereg_replace, mb_split usw.). Sie ist unabhängig von der internen Kodierung, die über mb_internal_encoding gesetzt wird, kann aber in vielen Projekten auf denselben Wert gesetzt werden.
Typischer Einsatz ist das explizite Setzen der Regex-Kodierung auf UTF-8 am Anfang eines Skripts, damit Multibyte-Zeichen wie Umlaute oder CJK-Zeichen korrekt gematcht werden. Ohne korrekte Kodierung können reguläre Ausdrücke fehlerhafte oder unerwartete Ergebnisse liefern.
Gültige Kodierungsnamen entsprechen denen, die mb_list_encodings zurückliefert (z. B. UTF-8, ISO-8859-1, EUC-JP).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $encoding | string|null | null | Der Name der zu setzenden Zeichenkodierung (z. B. "UTF-8"). Wird null oder kein Argument übergeben, wird die aktuelle Kodierung nur abgefragt, nicht verändert. |
Rückgabewert
null: gibt die aktuell eingestellte Kodierung als string zurück. Wird eine Kodierung gesetzt und ist sie gültig, gibt die Funktion true zurück. Bei einer ungültigen Kodierung wird false zurückgegeben.Beispiele
Aktuelle Regex-Kodierung abfragen
<?php
// Aktuelle Regex-Kodierung ausgeben
$current = mb_regex_encoding();
echo 'Aktuelle Regex-Kodierung: ' . $current;
Regex-Kodierung auf UTF-8 setzen und Umlaute matchen
<?php
// Sicherstellen, dass mb_ereg UTF-8-Zeichen korrekt verarbeitet
mb_regex_encoding('UTF-8');
$text = 'Schöne Grüße aus München';
if (mb_ereg('[[:alpha:]]+', $text, $matches)) {
echo 'Erstes Wort: ' . $matches[0];
}
Regex-Kodierung temporär wechseln und zurücksetzen
<?php
// Aktuelle Kodierung merken
$previous = mb_regex_encoding();
// Für eine Aufgabe auf EUC-JP wechseln
mb_regex_encoding('EUC-JP');
echo 'Während der Verarbeitung: ' . mb_regex_encoding() . PHP_EOL;
// Danach wieder zurücksetzen
mb_regex_encoding($previous);
echo 'Wiederhergestellt: ' . mb_regex_encoding() . PHP_EOL;
// Wichtig · Fallstricke
Achtung: Die über mb_regex_encoding gesetzte Kodierung gilt nur für die mb_ereg-Familie und hat keinen Einfluss auf andere mbstring-Funktionen wie mb_strpos oder mb_substr, die die interne Kodierung (mb_internal_encoding) verwenden.
Wird eine ungültige Kodierung übergeben, gibt die Funktion false zurück und die bisherige Einstellung bleibt unverändert. Eine Fehlerbehandlung über den Rückgabewert ist daher empfehlenswert.
Ab PHP 8.0 ist der Parameter offiziell als nullable (?string) typisiert. In älteren Versionen wurde ein leerer String oder kein Argument zum Abfragen verwendet.