Start · Sprachen · PHP · Referenz · mb_eregi_replace

mb_eregi_replace

Funktion

Ersetzt Zeichenketten per regulärem Ausdruck mit Multibyte-Unterstützung, ohne Groß-/Kleinschreibung zu beachten.

seit PHP 4.2.0 Kategorie: string

Signatur

mb_eregi_replace(string $pattern, string $replace, string $string, string $options = 'msr'): string|false|null

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

Typ
string|false|null
Beschreibung
Gibt den veränderten String zurück, wenn das Ersetzen erfolgreich war. Gibt 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;
Guten Tag Welt! Guten Tag PHP! Guten Tag Multibyte!

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;
Schreib an [E-Mail: Admin@Example.COM] oder [E-Mail: support@EXAMPLE.com]

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;
Guten Tag Welt! Guten Tag PHP! Guten Tag Multibyte!

// 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.