Page 1 sur 1

Detecter email dans string

Posté : 06 sept. 2014, 16:52
par Kal747
Bonjour,

Je cherche à détecter si un email est présent dans une chaîne de caractère.

Je voudrais faire ça par expression régulière, une expression régulière qui détecte un mail classique, avez vous une idée de l'expression ? (Il y en a 500 000 sur internet...).

Avant ces tests, je supprimerais les "caractères polueurs" de la chaines : espace, virgule, point virgule... (au cas ou des malins separement les mails style : prenom . nom @ gmail . com

Mais bien sur des utilisateurs trouverons toujours une parade ^^

Voilà si vous utilisez une expression où vous n'avez pas eu de soucis, je suis preneur !

Bon week-end

Re: Detecter email dans string

Posté : 06 sept. 2014, 19:00
par toytoy
tu peux utiliser la fonction str_replace pour supprimer les , ; et espaces http://php.net//manual/fr/function.str-replace.php

Re: Detecter email dans string

Posté : 07 sept. 2014, 11:00
par sirakawa
Si c'est une chaine qui DEVRAIT être un email:
http://us2.php.net/manual/fr/function.filter-var.php
$resultat = filter_var($variable, FILTER_VALIDATE_EMAIL); ://rend FALSE OU UN EMAIL
$resultat = filter_var ($resultat, FILTER_SANITIZE_EMAIL ); //rend false ou un email où il Supprime tous les caractères sauf les lettres, chiffres, et !#$%&'*+-/=?^_`{|}~@.[].

Si c'est un texte quelconque:
preg-grep devrait trouver l'email si besoin
http://us2.php.net/manual/fr/function.preg-grep.php

Re: Detecter email dans string

Posté : 07 sept. 2014, 14:45
par Kal747
Merci...

Mais str_replace ce n'est pas ce que je demande (j'ai dit que j'allais les supprimer avant donc je sais faire).

Ensuite c'est un email dans une chaîne de caractère qui contient autre chose.

Exemple :
"Bonjour mon email c'est [email protected]" doit me renvoyer true.

Donc filter_var -> poubelle.
Et je demande l'expression régulière donc preg_match / preg_grep je connais aussi.

Re: Detecter email dans string

Posté : 07 sept. 2014, 14:49
par toytoy
la prochaine fois essaie d'apprendre un peu le regex,

/[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}/i

i indique que c'est insensible à la casse, avec cette expression il va regarder si cette chaîne est présente dans ta chaîne

Re: Detecter email dans string

Posté : 07 sept. 2014, 15:04
par Kal747
Merci, je connais les Regex.

Ta regex ne fonctionne pour les mails recent (exemple, extension .paris).

Voici la liste des nouveaux domaines :
http://www.combell.com/fr/noms-de-domai ... extensions

La norme RFC officlelle de validation d'un Email est celle ci :

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

Mais j'aurais voulu savoir si une personne utilise une telle expression avant de la mettre en production sur un site très visité.

Merci par avance

Re: Detecter email dans string

Posté : 07 sept. 2014, 15:21
par toytoy
J'ai de plus en plus de mal à comprendre l'intérêt de ton post... #-o Comme dis si tu connais le regex tu sais ce qu'il faut changer dans le regex pour l'adapter au nouvelles extensions... Après le mieux pour valider un email reste d'envoyer un mail de confirmation, donc pas non plus besoin de se compliquer avec la normalisation ^^

Re: Detecter email dans string

Posté : 07 sept. 2014, 15:36
par Kal747
Je cherchais juste à voir si quelqu'un fesait ça pour avoir un retour d'expérience et être sur de pas me mettre un truc qui ne fonctionnera pas très bien.

Il y en a tellement sur internet que je ne sais pas vraiment laquelle utiliser...

Je vais me faire un jeu de test et les tenter

Re: Detecter email dans string

Posté : 07 sept. 2014, 19:55
par sirakawa
Moi non plus je ne comprends pas; ET JE N'APPRÉCIE PAS DU TOUT LE TON DES RÉPONSES:
filter_var -> poubelle
A se demander si les posts ne sont pas là que pour faire de la pub pour un site de rencontres...

Re: Detecter email dans string

Posté : 08 sept. 2014, 08:48
par toytoy
A se demander si les posts ne sont pas là que pour faire de la pub pour un site de rencontres...
+1 :roll:

Re: Detecter email dans string

Posté : 08 sept. 2014, 12:26
par Kal747
Bonjour,

Pour info la regex de la norme RFC semble bien fonctionner (donc sujet résolu).

Sirakawa tu n'aimes pas mon "ton" dans mes message mais je n'ai pas aimé non plus ces réponses bas niveau (digne de la rubrique PHP débutant) à se demande si les posts ne sont pas là que pour faire augmenter votre nombre de message (petite attaque volontaire cette fois-ci pour enchaîner sur mon 3ème point :D )

Pour ce qui est de la pub, vous avez votre opinion toute faite alors bon... Il est vrai que ça peut aider le référencement pour un ami, cela dit les page rank au niveau des pages sont nuls. Et puis c'est pas comme si j'étais inscrit sur ce forum avant la création de ce site ?

Enfin bref, merci pour votre aide et navré si je vous ai paru impoli ou autre.

Sujet résolu pour ma part

PS, en plus simple il y a cette expression : "/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/" qui est utilisé par le RegularExpressionValidator en .NET

Bonne journée

Re: [RESOLU] Detecter email dans string

Posté : 08 sept. 2014, 19:35
par sirakawa
Si tu énonçais clairement tes questions, tu aurais sans doute des réponses plus appropriées.
Figure-toi que le nombre de messages a une importance plus que faible, mais que rédiger une réponse prend du temps qui, lui, n'est compté nulle part.

Re: [RESOLU] Detecter email dans string

Posté : 08 sept. 2014, 21:22
par Kal747
Bonsoir,

Dans ce cas clarifie les besoins quand ils ne sont pas clairs, en espérant que tu ne sois pas MOE dans la vie ...
Maintenant il n'y avait qu'une question : "Avez vous une idée de l'expression ?" ... je peux te l'expliquer plus clairement si tu le souhaites.

Pour le nombre de messages c'était ironique... en reprenant ta phase
A se demander si les posts ne sont pas là que pour faire de la pub pour un site de rencontres...
Maintenant le sujet est résolu, ouvrons un mp si tu veux continuer à jouter.

Bonne soirée.