In PHP 7.0 und später wurde mb_eregi_replace () offiziell veraltet und nach Php 7.1 vollständig entfernt. Dies hat viele Entwickler gestört, die sich auf den regelmäßigen Austausch von Multi-Byte-Saiten verlassen. Insbesondere wenn ein unempfindlicher Ersatz von Unicode-Saiten (wie Chinesen, Japanisch usw.) erforderlich ist, ist es besonders wichtig, eine gleichwertige und leistungsstärkere Alternative zu finden.
Glücklicherweise kann die Funktion preg_replace () von PHP, kombiniert mit dem richtigen Modifikator- und Unicode -Unterstützung, noch mehr implementieren als mb_eregi_replace () . In diesem Artikel wird nach und nach vorgestellt, wie mb_eregi_replace ( ) perfekt durch preg_replace () ersetzt und leistungsstarke Unicode -reguläre Übereinstimmungen implementiert werden.
mb_eregi_replace () ist eine von Fall unempfindliche reguläre Ersatzfunktion in einer Multibyte-String-Erweiterung (Mbstring). Das Problem ist jedoch:
Die Syntax ist älter und unterstützt die Regelmäßigkeit des Perl -Stils nicht.
Schlechte Leistung.
Mit modernen Unicode, begrenzten Verarbeitungskapazität und hohen Wartungskosten.
Daher wird empfohlen, die modernere und merkmalreiche preg_replace () zu verwenden.
Angenommen, wir haben verwendet:
mb_eregi_replace("prüfen", "ersetzen", $text);
Wir können es so umschreiben:
preg_replace("/prüfen/ui", "ersetzen", $text);
Hier bedeutet der U -Modifikator, den Unicode -Modus einzuschalten, und ich meint, das obere und untere Gehäuse zu ignorieren.
Nehmen wir an, wir möchten alle "Äpfel" in einem Textabsatz durch "Bananen" ersetzen und sind unempfindliche Fall:
$text = "Meine Lieblingsäpfel,Und Apfelsaft。";
$result = preg_replace("/Apfel/ui", "Banane", $text);
echo $result;
Ausgabe:
我最喜欢吃Banane,还有Banane汁。
Erwägen Sie, den Unicode -Parameter in einer URL zu ersetzen (z. B. chinesisches Tag):
$url = "https://m66.net/search?q=Apfel手机";
$replaced = preg_replace("/Apfel/ui", "Banane", $url);
echo $replaced;
Ausgabe:
https://m66.net/search?q=Banane手机
Wie Sie sehen können, kann PREG_REPLACE () auch URLs mit Unicode verarbeiten.
Wenn Sie mehr Varianten wie "Apple Phone", "Apple Computer", "Apple Pie" usw. anpassen möchten, können Sie komplexere reguläre Ausdrücke verwenden:
$text = "我有一台ApfelComputer,也吃了ApfelGruppe。";
$pattern = "/Apfel(Computer|Gruppe)?/ui";
$replacement = "Banane";
$result = preg_replace($pattern, $replacement, $text);
echo $result;
Ausgabe:
我有一台Banane,也吃了Banane。
Denken Sie immer daran, den U -Modifikator hinzuzufügen, um den Unicode -Modus zu aktivieren.
PREG_REPLACE () unterstützt komplexere reguläre Syntax (z. B. Behauptungen, benannte Gruppen usw.) und ist flexibler als mb_eregi_replace () .
Wenn der Ersatzinhalt einen Backslash ( \ ) oder ein Dollar -Zeichen ( $ ) enthält, verwenden Sie den Escape -Prozess in preg_quote () oder doppelten Zitate.
Während veraltete mb_eregi_replace () unangenehm sein kann, dient Preg_replace () nicht nur als perfekte Alternative, sondern auch leistungsstärkere Unicode -regelmäßige Unterstützung. Solange Sie die Verwendung von u und i -Modifikatoren beherrschen, können Sie sich problemlos mit jedem Multibyte -Charakterersatzanforderungen befassen.
Wenn Sie sich mit einer komplexeren Unicode -Musteranpassung befassen müssen, können Sie genauso gut mehr über die Syntax und die Funktionen von PCRE -regulären Ausdrücken erfahren, um mehr Möglichkeiten in der regulären PHP -Welt freizuschalten.