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 :

Probleme de parsing


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Par défaut Probleme de parsing
    bonjour,
    je souhaite parser une page html avec le code ci-dessous :

    Lorsque j'ai qu'une seule réponse, cela marche très bien, par contre dès que j'ai deux réponse, il me prend tout ce qu'il y a entre les deux.
    Pouvez vous m'aider s'il vous plait.

    Merci


    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
    $fp = fopen("C:\Documents and Settings\Loïc\Bureau\SGBD\www_fftt_com - Classement.htm","r"); //lecture du fichier
    while (!feof($fp)) { //on parcourt toutes les lignes
      $page .= fgets($fp, 4096); // lecture du contenu de la ligne
     
     
    }
    $titre = eregi("<td ALIGN='LEFT' bgcolor='#EBEBEB'><font size=2><a href='(.*)</font></a></td>",$page,$regs); //on isole ce que je veux parser
    //echo $regs[1];  
     
    print $titre;
     
     
    fclose($fp);
     
    ?>

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    ton motif est .*
    Ce qui veut dire que il va essayer de prendre un maximum de caracteres jusqu'a </font>. Autrement dit, si il trouve plusieurs </fond>, il prendra le dernier pour avoir la plus grande sequence possible qui convient.

    Utilise le greedy mode, ou recherche 'tous les carcteres sauf' pour stoper la rechercher de la chaine plus tot.

    Z.

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 53
    Par défaut
    Bonjour,

    Plusieurs choses :

    1°) Utilises la balise pour inserer ton code stp.

    2°) Il faudrait que tu donne plus d'indication sur la fonction de ton code, car là hormis le fait que ce soit illisible du fait de la non-coloration, je ne vois pas quel est le but du script.

    Merci d'avance, Paul-H

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Par défaut
    Désoler pour ne pas avoir mis les balises, je suis nouveau ici donc j'ai pas l'habitude.
    Merci pour vos réponses rapides.
    Quel serait le code alors pour qu'il ne s'arrete pas au dernier </font> qu'il trouve mais au premier?

    Encore merci pour votre aide, c'est vraiment sympa.


    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
    <html><body>
     
     
    <?php
    //j'ouvre la page que je veux parser.
    $fp = fopen("C:\Documents and Settings\Loïc\Bureau\SGBD\www_fftt_com - Classement.htm","r"); //lecture du fichier
    while (!feof($fp)) { //on parcourt toutes les lignes
      $page .= fgets($fp, 4096); // lecture du contenu de la ligne
     
     
    }
    //Le code html que je veux parser se trouve juste après : td ALIGN='LEFT' bgcolor='#EBEBEB'><font size=2><a href=' et juste avant le premier /font></a></td> qu'il trouvera dans le code.
     
    $titre = eregi("<td ALIGN='LEFT' bgcolor='#EBEBEB'><font size=2><a href='(.*)</font></a></td>",$page,$regs); //on isole la partie du code qui m'interesse.
    echo $regs[1];  
     
     
     
     
    fclose($fp);
     
    ?>
    </body>
    </html>

  5. #5
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $titre = eregi("<td ALIGN='LEFT' bgcolor='#EBEBEB'><font size=2><a href='(.*?)</font></a></td>",$page,$regs); //greedy mode
     
    //ou
    $titre = eregi("<td ALIGN='LEFT' bgcolor='#EBEBEB'><font size=2><a href='([^<]*)</font></a></td>",$page,$regs); //tout sauf '<' donc des qu'il rencontre le 1er </font>, l'accumulation de la chaine est stoppee
     
    ?>

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Par défaut
    Merci beaucoup pour la réponse, la première avec le "?" ne fonctionne pas mais par contre, la deuxième solution marche très bien.

    Il me reste un dernier soucis, comment faire pour qu'il continu dans la page et me fasse la liste des autres expressions qui correspondent aux conditions. (affichage sous forme de tableau par exemple).

    Merci encore.

  7. #7
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    je ne connais pas les ereg, mais avec les fonctions preg, preg_match permet de recuperer les resultats.
    Z.

Discussions similaires

  1. Probleme de parsing de chaine, tronquer une chaine
    Par Voodo'o_d'ool dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/08/2008, 11h28
  2. Probleme de parsing sous struts ...
    Par DanZzz dans le forum Struts 1
    Réponses: 5
    Dernier message: 18/05/2006, 13h17
  3. [DOM] Probleme de parsing Xml en java
    Par bolivari dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 25/01/2006, 19h42
  4. [MSXSL] probleme de parsing &nbsp
    Par Triangle dans le forum Valider
    Réponses: 2
    Dernier message: 26/07/2005, 09h51
  5. [JDOM] probleme de Parse
    Par seb_fou dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 18/05/2005, 16h27

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