Signatur
Beschreibung
mb_eregi_replace durchsucht den Eingabe-String $string nach dem regulären Ausdruck $pattern und ersetzt alle Treffer durch $replace. Die Suche erfolgt dabei unabhängig von Groß- und Kleinschreibung (case-insensitive) und unterstützt Multibyte-Zeichenkodierungen wie UTF-8, sodass auch Umlaute, Akzente und andere Sonderzeichen korrekt verarbeitet werden.
Die Funktion verhält sich wie mb_ereg_replace, fügt jedoch implizit das Flag für Groß-/Kleinschreibungsignorierung hinzu. Sie ist besonders nützlich, wenn Benutzereingaben in verschiedenen Schreibweisen vorkommen können und zuverlässig ersetzt werden sollen, ohne manuell zwischen Groß- und Kleinbuchstaben unterscheiden zu müssen.
Der Parameter $options erlaubt weitere Steuerung des Such- und Ersetzungsverhaltens, z. B. ob der Ausdruck einzeilig (s) oder mehrzeilig (m) interpretiert werden soll. Standardmäßig sind die Optionen msr gesetzt.
Hinweis: Diese Funktion ist seit PHP 7.3.0 als deprecated markiert und sollte in neuem Code nicht mehr verwendet werden. Als moderner Ersatz empfiehlt sich preg_replace mit dem Modifier i und dem Modifier u für Unicode-Unterstützung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $pattern Pflicht | string | Der reguläre Ausdruck (POSIX-Extended-Syntax), nach dem im String gesucht wird. Groß-/Kleinschreibung wird automatisch ignoriert. | |
| $replace Pflicht | string | Der Ersatz-String, durch den gefundene Treffer ersetzt werden. Rückverweise auf Gruppen sind mit \1, \2 usw. möglich. |
|
| $string Pflicht | string | Der Eingabe-String, in dem gesucht und ersetzt wird. | |
| $options | string | msr | Optionen für den regulären Ausdruck als Zeichenkette. Mögliche Werte: m (mehrzeilig), s (Einzel-Zeile, Punkt matcht auch Newline), r (Rückverweise aktiviert). Standard ist msr. |
Rückgabewert
false zurück, wenn ein Fehler aufgetreten ist. Gibt null zurück, wenn ungültige Argumente übergeben wurden (seit PHP 8.0.0).Beispiele
Einfache case-insensitive Ersetzung mit Umlauten
<?php
// Alle Varianten von "hallo" (unabhängig von Groß-/Kleinschreibung) ersetzen
$text = 'Hallo Welt! hallo PHP! HALLO Multibyte!';
$result = mb_eregi_replace('hallo', 'Guten Tag', $text);
echo $result;
Ersetzung mit Rückverweis auf Treffergruppe
<?php
// E-Mail-Adressen im Text finden und in Kleinbuchstaben-Hinweis einbetten
$text = 'Schreib an Admin@Example.COM oder support@EXAMPLE.com';
$result = mb_eregi_replace(
'([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,})',
'[E-Mail: \1]',
$text
);
echo $result;
Moderne Alternative mit preg_replace (empfohlen ab PHP 7.3)
<?php
// Empfohlene Alternative zu mb_eregi_replace
$text = 'Hallo Welt! hallo PHP! HALLO Multibyte!';
// Modifier 'i' = case-insensitive, 'u' = Unicode/UTF-8
$result = preg_replace('/hallo/iu', 'Guten Tag', $text);
echo $result;
// Wichtig · Fallstricke
Deprecated seit PHP 7.3.0: mb_eregi_replace ist veraltet und sollte in neuem Code nicht mehr eingesetzt werden. Verwende stattdessen preg_replace mit den Modifikatoren /i (case-insensitive) und /u (Unicode). Ab PHP 8.0 kann die Funktion null zurückgeben, wenn ungültige Argumente übergeben werden.
Zeichenkodierung: Die aktive Multibyte-Kodierung wird durch mb_regex_encoding() gesteuert. Stelle sicher, dass die korrekte Kodierung (z. B. UTF-8) gesetzt ist, bevor du die Funktion verwendest.
Sicherheit: Benutzereingaben im $pattern-Parameter müssen sorgfältig geprüft oder escaped werden, um ReDoS-Angriffe (Regular Expression Denial of Service) zu verhindern.