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 :

fonction pour parser un fichier


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut fonction pour parser un fichier
    Bonjour,

    J'ai un petit problème assez complexe pour vous:

    voici le genre de texte que j'ai à parser:

    blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    user@domaine.com blabla bla bla bla blabla blabla
    blabla bla bla bla blabla blabla bla bla blablalbal bla

    blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabl user@domaine.com bla bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla

    et ainsi de suite.......

    ce que je veux faire est d'aller chercher le courriel ainsi que le paragraphe dans lequel il se trouve. Une fois saisi, j'envoie par courriel le paragraphe a la bonne adresse.

    Mon prebleme n'est pas d'envoyer le courriel mais de retrouver l'adresse avec le paragraphe associé......Le paragraphe va toujours commencer par les 2 meme mot en alternance, mais je ne sais jamais lequel des deux. Il peut commencer par il ou par elle exemple.......donc ca donne un indice quoi chercher.....un elle ou il ainsi qu'un courriel....cé pas trop

    pas évident.....

    merci de m'aider....je suis un peu confu

  2. #2
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    j'ai déjà eu à faire quelque chose de similaire, mais ce n'était pas des courriels, en adaptant pour des courriels ça donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    $texte='
    il blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    user_il@domaine.com blabla bla bla bla blabla blabla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
     
    pas blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    user_pas@domaine.com blabla bla bla bla blabla blabla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
     
    elle blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabl user_elle@domaine.com bla bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla';
     
    function trouver_courriel($paragraphe) {
      global $liste;
      if(preg_match('#([\w.%_-]+@[\w.-]+)\s#isU',$paragraphe[1],$courriel)) {
        $liste[]=array(
                       'courriel'=>$courriel[1],
                       'paragraphe'=>preg_replace('#\n#s',"\r\n",$paragraphe[1]));
      }
      return '';
    }
    $liste=array();
    $temp=preg_replace('#\r#s','',$texte."\n");
    preg_replace_callback('#((il|elle)\s.+\n)(\n|$)#isU','trouver_courriel',$temp);
     
    echo '<pre>';
    print_r($liste);
    echo '</pre>';
    reste à ajuster les caractères admissibles dans une adresse courriel ou a utiliser un formatage plus formel.

  3. #3
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    Après avoir exécuté le code, je m'appercois qu'il récupère les courriel, mais je veux aussi qu'il m'isole chaque paragraphe correspondant au courriel....ce que je veux faire, est d'envoyer par courriel le paragrphe correspondant au courriel du dit paragraphe

  4. #4
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    moi ça m'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Array
    (
        [0] => Array
            (
                [courriel] => user_il@domaine.com
                [paragraphe] => il blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    user_il@domaine.com blabla bla bla bla blabla blabla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
     
            )
     
        [1] => Array
            (
                [courriel] => user_elle@domaine.com
                [paragraphe] => elle blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabl user_elle@domaine.com bla bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
     
            )
     
    )
    courriel et paragraphe correspondant. tu obtiens autre chose ?

  5. #5
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    voici ce que j'ai:

    Array
    (
    [0] => Array
    (
    [courriel] => user_il@domaine.com
    [paragraphe] => il blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    user_il@domaine.com blabla bla bla bla blabla blabla
    blabla bla bla bla blabla blabla bla bla blablalbal bla

    pas blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    user_pas@domaine.com blabla bla bla bla blabla blabla
    blabla bla bla bla blabla blabla bla bla blablalbal bla

    elle blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabl user_elle@domaine.com bla bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla
    blabla bla bla bla blabla blabla bla bla blablalbal bla

    )

    )

  6. #6
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    Y' a aussi que j'aimerais bien changer le il et elle par To: et À:............je ne peux pas le changer directement dans le regex ? ca ne fonctionne pas

  7. #7
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    l'affichage différent vient de la mise en page sur ce forum, les lignes en apparence vides entre les paragraphes contiennent en fait un espace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_replace_callback('#((À:|à:|to:)\s.+\n)\s*(\n|$)#isU','trouver_courriel',$temp);
    l'ajout \s* est pour éléminer ce ou ces espaces.

    le premier \s indique qu'il doit y avoir un espace après À:, à: ou to:... si ce n'est pas le cas, il faut éliminer ce \s.

    les accents c'est bon si la configuration est pour la langue française. sinon, il ne reconnaitra pas les majuscule/minuscule sur les lettres accentués, c'est pourquoi il y a les 2 formes à: et À:

  8. #8
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    Daniel61..merci, tout marche parfaitement....


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

Discussions similaires

  1. Appel d'une fonction pour renommer un fichier
    Par navis84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/04/2006, 15h13
  2. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 19h32
  3. [SAX] Probleme pour parser un fichier
    Par aymron dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 25/11/2005, 15h48
  4. fonction pour lire les fichier audio
    Par tarek007 dans le forum Multimédia
    Réponses: 1
    Dernier message: 11/05/2005, 16h28
  5. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29

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