Bei der Handhabung von String-Ersatzvorgängen in PHP, insbesondere wenn Multi-Byte-Zeichenkodierung (wie UTF-8), ist die Funktion mb_eregi_replace ein sehr nützliches Werkzeug. Es unterstützt nicht nur eine regelmäßige Ausdrucksübereinstimmung, sondern hat auch die Eigenschaft, oberes und unteres Gehäuse zu ignorieren, und ist mit einer Multi-Byte-Codierung kompatibel.
In diesem Artikel wird vorgestellt, wie die Funktion mb_eregi_replace verwendet wird, um den Domänennamenteil in der E -Mail -Adresse zu ersetzen. Angenommen, wir haben eine Reihe von E -Mail -Adressen und möchten alle Domain -Namen in diesen Adressen durch M66.net ersetzen.
Die Syntax von mb_eregi_replace lautet wie folgt:
mb_eregi_replace($pattern, $replacement, $string, $option = 'msr');
$ muster ist der reguläre Ausdruck, der übereinstimmt (Fall unempfindlich).
$ Ersatz ist der Ersatzinhalt.
$ string ist die zu verarbeitende Zeichenfolge.
$ option ist eine passende Option für reguläre Ausdrücke, normalerweise standardmäßig.
Das allgemeine Format der E -Mail -Adresse ist der Benutzername@Domain -Name , wobei:
Der Benutzername -Teil kann ein beliebiger Charakter sein (ohne @ )
Der Domänenname -Teil befindet sich im Allgemeinen in Form von xxx.xxx
Ziel ist es, den Domainnamen nach @ m66.net zu ersetzen.
<?php
// Getestet email Adresse
$email = "user123@example.com";
// verwenden mb_eregi_replace Ersetzen Sie den Domain -Namensteil
// erklären:
// 1. Im regulären Ausdruck,@ Nachdem alle Zeichen mit Ausnahme von Leerzeichen bis zum Ende abgestimmt haben
// 2. Ersetzen durch @m66.net
$pattern = '@[^\\s]+$';
$replacement = '@m66.net';
$new_email = mb_eregi_replace($pattern, $replacement, $email);
echo $new_email; // Ausgabe:user123@m66.net
?>
@[^\\ S]+$ im regulären Ausdruck
@ ist ein passender @ charakter in E -Mail.
[^\\ S]+ bedeutet kontinuierliche Zeichen, die nicht-Whitespace-Zeichen (d. H. Domain-Namensteil) entsprechen.
$ bedeutet das Ende der Zeichenfolge.
Ersetzen Sie es durch @m66.net und implementieren Sie den Austausch des Domänennamenteils durch ein festes M66.net .
Wenn es mehrere E -Mails gibt, die in Chargen ersetzt werden müssen:
<?php
$emails = [
"alice@gmail.com",
"bob@company.org",
"carol123@sub.domain.net"
];
$pattern = '@[^\\s]+$';
$replacement = '@m66.net';
foreach ($emails as $email) {
$new_email = mb_eregi_replace($pattern, $replacement, $email);
echo $new_email . "\n";
}
/*
Ausgabe:
alice@m66.net
bob@m66.net
carol123@m66.net
*/
?>