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 :

Extraire adresses email [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Extraire adresses email
    Bonjour à toutes & tous,

    J'essaye de récupérer dans mes fichiers (qui contiennent du texte brut), les adresses emails qui sont à l'interieur.

    Pour le moment, j'utilise la regex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9]+/i", $string, $matches);
    Le soucis, c'est que si une personne à un email de type blabla@nom-de-domaine.fr , le mail n'est pas recupéré (à cause des tirets dans le domaine).

    Je ne vois pas trop comment modifier cette regex pour que cela match, avez-vous une idée ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quel est ton problème pour ajouter le tiret ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Et bien je ne sais pas trop ou le mettre

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il ne faut pas dire ce genre de choses

    Tu reconnais bien quand même dans ton expression qu'il y a un bloc avant et après un @.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Oui là dessus pas de problème
    Après je n'arrive pas à m'y retrouvé dans la partie de droite

  6. #6
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9\-]+/i
    le tiret étant un caractère particulier dans les regexp tu doit "l'escaper" avec "\"
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Merci pour l'astuce, mais malheureusement, ca me renvoie l'adresse email coupée au 1er tiret
    Donc dans mon exemple, ca me renvoie "blabla@nom"

  8. #8
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    tu a bien rajouté le \ et le -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9\-]+/i
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Oui, Il me renvoie bien l'adresse email, mais coupée au 1er tiret

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Autant pour moi, ca fonctionne

  11. #11
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    normalement ca fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $string = 'patrick@baras.be test@test-de-iret.com blabla@nom-de-domaine.fr';
    preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9\-]+/i", $string, $matches);
    echo "<pre>";
    var_dump($matches);
    echo "<pre>";
    ?>
    donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    array(1) {
      [0]=>
      array(3) {
        [0]=>
        string(16) "patrick@baras.be"
        [1]=>
        string(21) "test@test-de-iret.com"
        [2]=>
        string(24) "blabla@nom-de-domaine.fr"
      }
    }
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  12. #12
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    Citation Envoyé par Elpix Voir le message
    Autant pour moi, ca fonctionne
    De rien
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  13. #13
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    n'oublie pas de marquer le sujet comme
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  14. #14
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    En fait le tiret dans une classe de caractère n'a besoin d'être échappé que s'il est ambigu, étant donné qu'il sert à définir des intervalles de caractères.

    Il y a plusieurs cas où il n'est pas nécessaire de l'échapper:

    • Quand il est au début de la classe de caractère ou juste aprés le symbole de négation ^: [-abcd] ou [^-abcd]
    • Quand il est à la fin de la classe de caractères: [abcd-]
    • Quand il succède ou précède une classe de caractère: [\d-a], [a-\d], [[:alnum:]-@], [a-[:punct:]]
    • Immédiatement après un intervalle de caractères: [a-f-z]


    Par contre le tiret ne sera pas identifier comme un littéral au milieu d'un intervalle incohérent comme: [z-a] et une erreur de rang invalide sera générée.

    Partout ailleurs (dans une classe de caractère, en dehors ce n'est pas nécessaire non plus) il doit être échappé pour être vu comme un caractère.

    Ça ne pose aucun problème de l'échapper dans les cas précités car le moteur de regex ignore les échappements inutiles dans une classe de caractère (à l'exception du N majuscule).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/07/2009, 14h11
  2. extraire adresse email
    Par bastien dans le forum Word
    Réponses: 2
    Dernier message: 07/07/2009, 22h07
  3. je cherche à extraire les adresses emails de mon outlook
    Par panganino dans le forum Outlook
    Réponses: 4
    Dernier message: 07/03/2008, 11h39
  4. extraire une adresse email d'un chaine de caractere
    Par sympho dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 22/05/2007, 01h15

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