Lors de la gestion des opérations de remplacement de chaîne en PHP, en particulier lors du codage des caractères multi-octets (comme UTF-8), la fonction MB_EREGI_REPLACE est un outil très utile. Il prend en charge non seulement l'appariement de l'expression régulière, mais a également la propriété d'ignorer la partie supérieure et les minuscules et est compatible avec le codage multi-octets.
Cet article présentera comment utiliser la fonction MB_EREGI_REPLACE pour remplacer la partie du nom de domaine dans l'adresse e-mail. Par exemple, supposons que nous ayons un ensemble d'adresses e-mail et que nous voulons remplacer tous les noms de domaine de ces adresses par m66.net .
La syntaxe de MB_ERGI_REPLACE est la suivante:
mb_eregi_replace($pattern, $replacement, $string, $option = 'msr');
Le modèle $ est l'expression régulière à correspondre (insensible au cas).
$ Remplacement est le contenu de remplacement.
$ String est la chaîne à traiter.
L'option $ est une option de correspondance pour les expressions régulières, généralement par défaut.
Le format général de l'adresse e-mail est nom d'utilisateur @ nom de domaine , où:
La partie du nom d'utilisateur peut être n'importe quel caractère (à l'exclusion @ )
La partie de nom de domaine est généralement sous la forme de xxx.xxx
L'objectif est de remplacer le nom de domaine après @ à m66.net .
<?php
// Testé email adresse
$email = "user123@example.com";
// utiliser mb_eregi_replace Remplacez la partie du nom de domaine
// expliquer:
// 1. En expression régulière,@ Après avoir fait correspondre tous les personnages sauf les espaces jusqu'à la fin
// 2. Remplacer par @m66.net
$pattern = '@[^\\s]+$';
$replacement = '@m66.net';
$new_email = mb_eregi_replace($pattern, $replacement, $email);
echo $new_email; // Sortir:user123@m66.net
?>
@ [^ \\ s] + $ en expression régulière
@ est un caractère correspondant @ par e-mail.
[^ \\ s] + signifie des caractères continus correspondant aux caractères non-blancs (c'est-à-dire, partie du nom de domaine).
$ signifie la fin de la chaîne.
Remplacez-le par @ m66.net et implémentez le remplacement de la pièce de nom de domaine par un M66.net fixe.
S'il y a plusieurs e-mails qui doivent être remplacés par lots:
<?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";
}
/*
Sortir:
alice@m66.net
bob@m66.net
carol123@m66.net
*/
?>