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 :

récupérer infos à partir d'un code source web [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut récupérer infos à partir d'un code source web
    bonjour
    j'ai quelques petits soucis, et après quelques bonnes heures de recherches, j'abandonne ...

    alors voilà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $data = CODE SOURCE D UNE PAGE WEB;
    $expr = '#<td><a href="(.*?)">(.*?)</a></td>">#';
    //$expr = '#<td><a href="(.*?)">(.*?)</a></td><td class="(.*?)">#';
    preg_match_all($expr,$data, $res);
     
    if( count($res[0]) !=0 ){
    		echo '<h2>resultat trouves '.count($res[0]).'</h2>';
    		echo '<h1>'.strip_tags($res[2][0]).'</h1>'; //exemple d'affichage
    }else echo '<h1>no result</h1>';
    donc $expr marche parfaitement bien, et j'arrive à afficher tout ce que je souhaite,et le résultat trouvé me convient (=c'est bien ce que je cherchais à avoir )
    mais $expr (celle qui est commentée), ne me trouve plus aucun résultat ce qui n'est pas normal. Voici un bout du code source de la page récupérée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href="http://www.SITEXEB/index.php">NOM SITE WEB</a></td>  <td class="green">Not listed</td>
    donc j'ai besoin de l'URL (href), du NOM SITE et également de GREEN
    voyez vous une erreur dans ce que j'ai fait ?
    peut-être des problèmes d'espace dans l'expression régulière, mais je pense avoir déjà tout essayé ...

    en espérant vous avoir fournit assez d'éléments pour me répondre

    merci bien pour votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Par défaut
    Utilise plutôt un outil fait pour parser du HTML proprement :
    http://simplehtmldom.sourceforge.net/

    Et indique-nous ce que tu souhaites récupérer et dans quoi.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Bonjour,



    La RE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $expr = '#<td><a href="(.*?)">(.*?)</a></td>">#';
    ne marche pas, il y a dans sa fin les deux caractères qui terminent l’autre RE commentarisée: or il n’y a pas ces deux caractères après ’</a></td>’ dans la chaîne, mais deux blancs.

    Ce qui matche c’est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $expr   = '#<td><a href="(.*?)">(.*?)</a></td>#';


    Et pour l’autre, il faut insérer deux blancs au milieu après </a></td>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $expr   = '#<<td><a href="(.*?)">(.*?)</a></td>  <td class="(.*?)">#'




    Ceci dit, pour attraper des portions qui sont entre “ “ et sont donc dénuées du caractère , il faut faire une répétition du symbole signifiant tout sauf " et l’entourer de parenthèses, aux deux endroits de l’adresse et de green:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $expr   = '#<td><a href="([^"]+)">(.*?)</a></td>  <td class="([^"]+)">#'


    Nota bene: je doute qu’il y ait vraiment deux blancs après
    ’</a></td>’ dans le code source réel.

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

Discussions similaires

  1. [WD12] Info manquante dans le code source d'une page web
    Par zouzoukha dans le forum WinDev
    Réponses: 12
    Dernier message: 18/06/2012, 04h21
  2. Réponses: 0
    Dernier message: 29/11/2011, 09h20
  3. Réponses: 5
    Dernier message: 06/04/2008, 20h08
  4. Réponses: 5
    Dernier message: 13/04/2007, 13h54

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