Page 1 sur 1

Rechercher un email dans un texte et le remplacer par une ch

Posté : 30 mai 2008, 15:49
par filo
Bonjour à tous,

Je souhaiterai recherche les adresses emails contenu dans du texte en base et les remplacer par une chaine de caractères.
Pour cela j'essaie les expression régulières mais ça ne fonctionne pas :

Code : Tout sélectionner

$texte= ereg_replace("([a-zA-Z0-9]+)@([a-zA-Z0-9]+).{2,4}$", " --------------", $texte);
Cette fonction ne reconnait pas les emails dans mon texte.

Est ce que quelqu'un peut m'aider ?

Merci d'avance

Posté : 31 mai 2008, 09:38
par Ryle
Il faut bien comprendre ce que fait ton expression :
([a-zA-Z0-9]+) -> n'importe quel caractère alphanumérique, entre 1 et N fois
@ -> suivi(ent) du caractère arobase
([a-zA-Z0-9]+) -> suivit de n'importe quel caractère alphanumérique, entre 1 et N fois
.{2,4} -> suivit de n'importe quel caractère, entre 2 et 4 fois
$ -> qui termine la chaine

En gros, si l'adresse email n'est pas juste à la fin de la chaine, cette expression ne pourra pas l'identifier (à cause du $).
Concernant le format de l'email, le point est utilisé en expreg comme n'importe quel caractère. Il te manque donc la notion du caractère point (\.) qui va désigner le point séparant le domaine de l'extension.

Enfin, il n'est pas rare de voir des points ou des tirets dans les adresses mail, hors tes expressions de part et d'autre de l'arobase ne prennent en compte que des caractère aplhanumériques :)