Signatur
Beschreibung
mb_eregi() gleicht den Multibyte-String $string gegen den regulären Ausdruck $pattern ab, ohne dabei zwischen Groß- und Kleinschreibung zu unterscheiden. Die Funktion unterstützt Multibyte-Zeichenkodierungen und ist damit für Sprachen wie Japanisch, Chinesisch oder andere Nicht-ASCII-Sprachen geeignet.
Wird der optionale Parameter $regs angegeben, so wird er mit dem vollständigen Treffer sowie allen Teiltreffern (Capture Groups) befüllt — ähnlich wie preg_match() mit dem $matches-Parameter. $regs[0] enthält den vollständigen Treffer, $regs[1] den ersten Teilausdruck usw.
Die Funktion arbeitet mit der intern eingestellten Multibyte-Kodierung (standardmäßig die durch mb_internal_encoding() gesetzte Kodierung). Da mb_eregi() auf der veralteten POSIX-ERE-Syntax (Extended Regular Expressions) basiert und nicht die mächtigere PCRE-Syntax verwendet, wird für neue Projekte die Nutzung von preg_match() mit dem /i-Modifier und /u-Flag empfohlen.
Achtung: Diese Funktion ist seit PHP 7.3.0 als veraltet (deprecated) markiert und wurde in PHP 8.0.0 entfernt. In modernem PHP-Code sollte stattdessen preg_match() verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $pattern Pflicht | string | Der reguläre Ausdruck im POSIX-ERE-Format. Groß-/Kleinschreibung wird beim Abgleich ignoriert. | |
| $string Pflicht | string | Der zu durchsuchende Multibyte-String. | |
| $regs | array | null | Optionale Referenz auf ein Array. Wenn angegeben, wird es mit dem vollständigen Treffer ($regs[0]) und allen Teiltreffern befüllt. |
Rückgabewert
false, wenn keine Übereinstimmung gefunden wurde. Wenn $regs nicht angegeben wurde und eine Übereinstimmung vorliegt, wird 1 zurückgegeben.Beispiele
Einfacher Groß-/Kleinschreibung-unabhängiger Abgleich
<?php
// Einfacher Abgleich ohne Berücksichtigung der Groß-/Kleinschreibung
$string = 'Hallo Welt';
if (mb_eregi('hallo', $string)) {
echo 'Treffer gefunden!';
} else {
echo 'Kein Treffer.';
}
Abgleich mit Capture Groups
<?php
// Teilausdrücke (Capture Groups) erfassen
$string = 'Benutzer: Max Mustermann';
if (mb_eregi('Benutzer: ([A-Za-z]+) ([A-Za-z]+)', $string, $regs)) {
echo 'Vollständiger Treffer: ' . $regs[0] . "\n";
echo 'Vorname: ' . $regs[1] . "\n";
echo 'Nachname: ' . $regs[2] . "\n";
}
Modernes Äquivalent mit preg_match (empfohlen)
<?php
// Empfohlene Alternative ab PHP 7.3+
$string = 'Hallo Welt';
if (preg_match('/hallo/iu', $string)) {
echo 'Treffer gefunden (mit PCRE und Unicode-Unterstützung)!';
}
// Wichtig · Fallstricke
Deprecation: mb_eregi() ist seit PHP 7.3.0 als veraltet markiert (E_DEPRECATED) und wurde in PHP 8.0.0 vollständig entfernt. Code, der diese Funktion verwendet, muss für PHP 8+ auf preg_match() mit den Flags /i (case-insensitive) und /u (UTF-8/Unicode) umgestellt werden.
Die Funktion basiert auf POSIX Extended Regular Expressions (ERE), die weniger leistungsfähig sind als PCRE. Unter anderem fehlen Nicht-Gierig-Quantoren (*?, +?), Lookahead/Lookbehind-Assertions und benannte Capture Groups.
Die verwendete Multibyte-Kodierung wird durch mb_regex_encoding() gesteuert, nicht durch mb_internal_encoding(). Wer sicherstellen möchte, dass die richtige Kodierung verwendet wird, sollte mb_regex_encoding('UTF-8') explizit setzen.