2010-09-19 8 views
1

S'il vous plaît aider avec ce petit problème si vous le pouviez.php preg_match, comment changer les valeurs

Je voudrais rechercher une chaîne, si une correspondance est faite, je voudrais changer la valeur à quelque chose d'autre.

par ex.

if (preg_match("gmail",$email)) { 

// code needed to switch "gmail" for "googlemail" 

} 

Ceci est nécessaire car mon serveur de messagerie n'acceptera pas d'adresse e-mail au format 'gmail.com'.

Merci d'avance. Shane

Répondre

0

Utilisez preg_replace:

preg_replace("gmail", "googlemail", $email); 
+0

Est-ce que cela ne modifie la valeur $ email si un match (gmail) se trouve? – shane

+0

Oui. Comme l'a dit Galen, vous pouvez aussi bien utiliser 'str_replace' si vous faites un simple remplacement de chaîne. –

2

si vous n'avez pas besoin d'expressions régulières utilisent simplement str_replace. Pas besoin de tester non plus, il suffit de le remplacer.

str_replace('@gmail.com', '@googlemail.com', $email); 
+0

Cela a fonctionné parfaitement. Merci beaucoup. – shane

+0

Shane: Ce code va changer quelque chose comme 'gmail4353 @ gmail.com' à' googlemail4353 @ googlemail.com'. –

1

Juste pour que cela ne correspond pas à quelque chose comme [email protected]:

$email = preg_replace('/(.+)gmail(\..+)$/', '$1googlemail$2', $email); 
+0

cela va changer [email protected] à [email protected] et vous avez oublié le suivi/ – Galen

+0

Pourquoi le '(\ .. +) $'? Y a-t-il d'autres [TLD] (http://en.wikipedia.org/wiki/Top-level_domain) s en plus du '.com' de' gmail'? –