Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie preg_replace () anstelle von mb_eregi_replace, um eine komplexere Unicode -Matching zu erreichen

Verwenden Sie preg_replace () anstelle von mb_eregi_replace, um eine komplexere Unicode -Matching zu erreichen

M66 2025-06-02

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.

Warum wird mb_eregi_replace () veraltet?

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.

Verwenden Sie preg_replace () anstelle von mb_eregi_replace () anstelle von mb_eregi_replace ()

Grundnutzung

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.

Beispiel: Ersetzen Sie chinesische Schlüsselwörter in Saiten

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汁。

Beispiel: Ersetzen Sie einen bestimmten Unicode -Parameter aus einer URL

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.

Komplexer regelmäßiger Austausch

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。

Dinge zu beachten

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

Zusammenfassen

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.