Rechercher un email dans un texte et le remplacer par une chaine de caractères

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Rechercher un email dans un texte et le remplacer par une chaine de caractères

par Ryle » 31 mai 2008, 09:38

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 :)

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

par filo » 30 mai 2008, 15:49

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