IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Trouver une adresse e-mail dans un texte [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur multimédia
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 25
    Points
    25
    Par défaut Trouver une adresse e-mail dans un texte
    Bonsoir,

    J'avais un problème avec les regex pour trouver une URL (voir ici). Voilà que j'en ai encore un avec une recherche de mail... Je comprend pas. Pourtant, j'avais fini par comprendre mon erreur avec les URL mais bon.

    Voilà donc ma fonction de regex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function replaceMail($theText)
    {
    	$expreg = "`"; // Début de ligne
    	$expreg .= "([a-zA-Z0-9]\._-)+"; // L'utilisateur, peut comporter un "_", ".", "-", obligatoire au moins une lettre
    	$expreg .= "@"; // L'arobase, obligatoire
    	$expreg .= "(([a-zA-Z0-9])*\.)+"; // Le domaine ou sous-domaine, alphanum, présent au moins une fois
    	$expreg .= "[a-zA-Z]{2,4}"; // l'extention, mini 2 et maxi 3 caractères
    	$expreg .= "`"; // Fin de ligne
     
    	return preg_replace($expreg, "¤Mail¤", $theText);
    }
    Voici le résultat :

    truc@machin.com --> truc@¤Mail¤
    truc-truc@machin.com --> truc-truc@¤Mail¤
    D'après le résultat, je comprends bien qu'il y a un problème soit au niveau de l'utilisateur soit au niveau de l'arobase. J'ai donc essayé d'enlevé les point, underscore et tiret, mais ça change rien, même résultat. Au niveau de l'arobase, je sais pas quoi faire de plus.

    Quelqu'un pourrait me dire ce que j'ai mal fait et me l'expliquer ? Merci d'avance.

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 535
    Points
    2 535
    Par défaut
    En voilà une qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}
    Essaye de comparer pour voir ce qui cloche dans la tienne.

  3. #3
    Nouveau membre du Club
    Profil pro
    Développeur multimédia
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Bon j'ai compris... En fait il n'y a aucune erreur !!!

    Le seul truc qui n'allait pas c'est que j'appelais la fonction qui recherche les URL avant celle qui recherche les mails. Comme un mail comporte une url simple (domaine.extention) ben il rechercher un domaine dans les mails... Donc il suffisait simplement de rechercher et de remplacer les mails avant de rechercher et de remplacer les URL.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut et merci deja pour tes 2 posts !!!

    j'ai besoin d'un truc un peu chiant et j'y connais vraiment rien en regexp

    j'aimerai d'apres une chaine : "fiuhreiufhreiuhfrei ufirefieu fier if rei fire fire fire fire frie www.google.fr reif hrei iyfi gez iu coucou@free.fr fç rfàç rfe àçfreç frç fre çfrfr "

    en extraire 2 données :

    www.google.fr en <a href="www.google.fr">www.google.fr</a>
    et
    coucou@free.fr en <a href="mailto:coucou@free.fr">coucou@free.fr</a>

    d'avance merci à tous !!!
    Julien

  5. #5
    Nouveau membre du Club
    Profil pro
    Développeur multimédia
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Euh tu veux replacer ou extraire ? Dans les deux cas, si tu relies les deux posts (celui ci et celui dont je parle en tout premier message), tu trouveras ta réponse. Perso je dirai de matter en priorité l'autre topic.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup mais j'ai essayé et j'y arrive pas, j'y connais rien !!

    je cherche à remplacer !
    Merci
    Julien

  7. #7
    Nouveau membre du Club
    Profil pro
    Développeur multimédia
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Voilà le post précis donnant une fonction pour remplacer les URL par les mêmes URL mais avec une balise <a> créant ainsi un lien :

    http://www.developpez.net/forums/sho...60&postcount=8

    Pour les mails, tu refais une autre fonction en plus de celle là, en changeant la regex pour qu'elle cible les mails. Pour le lien, faut penser que c'est un mailto à mettre dans la balise <a>. Voilà ce que ca devrait donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function replaceMail($theText)
    {
    	$expreg = "`"; // Début de ligne
    	$expreg .= "([a-zA-Z0-9]\._-)+"; // L'utilisateur, peut comporter un "_", ".", "-", obligatoire au moins une lettre
    	$expreg .= "@"; // L'arobase, obligatoire
    	$expreg .= "(([a-zA-Z0-9])*\.)+"; // Le domaine ou sous-domaine, alphanum, présent au moins une fois
    	$expreg .= "[a-zA-Z]{2,4}"; // l'extention, mini 2 et maxi 3 caractères
    	$expreg .= "`"; // Fin de ligne
     
    	return preg_replace($expreg, "<a href='mailto:".$0."' target='_blank'>".$0."</a>", $theText);
    }
    Ah par contre, je viens de me rendre compte que je n'ai pas expliqué la variable "$0", c'est en fait le morceau de chaîne de caractère qui a été détecté par la fonction preg_replace(...). Autrement dit, la ou les URL quand on cherche une URL sinon le ou les mails quand on cherche un mail.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Trouver une fin de paragraphe dans un texte
    Par anemone-clown dans le forum Langage
    Réponses: 12
    Dernier message: 09/09/2011, 16h07
  2. Réponses: 9
    Dernier message: 01/06/2010, 10h55
  3. Trouver une série de chiffres dans du texte
    Par Sancti_Eyes dans le forum Langage
    Réponses: 4
    Dernier message: 25/08/2009, 22h54
  4. Comment trouver une chaine de caractère dans fichier texte
    Par youssef1989 dans le forum Débuter
    Réponses: 3
    Dernier message: 01/05/2008, 16h45
  5. Trouver une adresse mail dans un fichier word
    Par vonitiana dans le forum Langage
    Réponses: 18
    Dernier message: 09/06/2006, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo