[RESOLU] Detecter email dans string

Eléphanteau du PHP | 46 Messages

06 sept. 2014, 16:52

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
Kal747
---
Envie de faire des rencontres gratuites ? Essayez mon site de rencontre
A la recherche d'une maison ou d'un appartement ? Trouvez le meilleur prix sur annonces immobilières

Eléphant du PHP | 113 Messages

06 sept. 2014, 19:00

tu peux utiliser la fonction str_replace pour supprimer les , ; et espaces http://php.net//manual/fr/function.str-replace.php

Mammouth du PHP | 2278 Messages

07 sept. 2014, 11:00

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
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 46 Messages

07 sept. 2014, 14:45

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.
Kal747
---
Envie de faire des rencontres gratuites ? Essayez mon site de rencontre
A la recherche d'une maison ou d'un appartement ? Trouvez le meilleur prix sur annonces immobilières

Eléphant du PHP | 113 Messages

07 sept. 2014, 14:49

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

Eléphanteau du PHP | 46 Messages

07 sept. 2014, 15:04

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
Kal747
---
Envie de faire des rencontres gratuites ? Essayez mon site de rencontre
A la recherche d'une maison ou d'un appartement ? Trouvez le meilleur prix sur annonces immobilières

Eléphant du PHP | 113 Messages

07 sept. 2014, 15:21

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 ^^

Eléphanteau du PHP | 46 Messages

07 sept. 2014, 15:36

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
Kal747
---
Envie de faire des rencontres gratuites ? Essayez mon site de rencontre
A la recherche d'une maison ou d'un appartement ? Trouvez le meilleur prix sur annonces immobilières

Mammouth du PHP | 2278 Messages

07 sept. 2014, 19:55

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...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 113 Messages

08 sept. 2014, 08:48

A se demander si les posts ne sont pas là que pour faire de la pub pour un site de rencontres...
+1 :roll:
Modifié en dernier par toytoy le 08 sept. 2014, 16:53, modifié 2 fois.

Eléphanteau du PHP | 46 Messages

08 sept. 2014, 12:26

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
Kal747
---
Envie de faire des rencontres gratuites ? Essayez mon site de rencontre
A la recherche d'une maison ou d'un appartement ? Trouvez le meilleur prix sur annonces immobilières

Mammouth du PHP | 2278 Messages

08 sept. 2014, 19:35

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.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 46 Messages

08 sept. 2014, 21:22

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.
Kal747
---
Envie de faire des rencontres gratuites ? Essayez mon site de rencontre
A la recherche d'une maison ou d'un appartement ? Trouvez le meilleur prix sur annonces immobilières