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 :

Parser tableau html avec DOMDocument


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut Parser tableau html avec DOMDocument
    Bonjour,

    J'ai une page html avec des tableaux.

    Le tableau qui m’intéresse se nomme : info-valeur list

    J'arrive à rentrer dedans mais je souhaiterais afficher l'ensemble des balises TD, dans un tableau, comment faire svp ?

    Pour que ca me donne un truc du genre :

    Cours Nyse Euro 54.21 (c) EUR
    Variation 5.53%
    Dernier échange 08/03/13
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
     
    $strhtml = '
    <table class="info-valeur list">
    
    <tr>
    	<td class="label">
    	<b>Cours</b>
    	Nyse Euro			</td>
    	<td>
    	<small   class="tooltip icon ico-realtime" title="Données temps réel" id="58bceUi_Icon51" ></small>				<b><span id="brs-sl513cd333e4741"><span class="cotation">54.21 (c) EUR</span></span></b>
    	</td>
    </tr>
     
    <tr>
    	<td class="label gras">Variation</td>
    	<td class="gras"><span id="brs-sl513cd333e493c" class="color3">5.53%</span></td>
    </tr>
    
    <tr>
    	<td class="label">Dernier échange</td>
    	<td>08/03/13&nbsp;<span id="brs-sl513cd333e4c66">17:35:00</span></td>
    </tr>
    
    </table>
    ';
     
    $dochtml = new DOMDocument();
    $dochtml->loadHTML($strhtml);
     
    $elem = $dochtml->getElementsByTagName('table');
    $Tableau = array();
     
     
    foreach($elem as $elemok) 
    {
      if($elemok->getAttribute('class') == 'info-valeur list') 
      {
    	$Tableau[] = $elemok->nodeValue;
      }
    }
     
    print_r($Tableau);
    ?>
    Merci beaucoup d'avance.

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    logiquement tous les td sont dans un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem = $dochtml->getElementsByTagName('table');
    ensuite un peu de xpath, un peu comme ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $doc = new DOMDocument();
    $doc->loadHTMLFile(/*....*/);
    $xpath = new DOMXpath($doc);
    $elements = $xpath->query('table/tr/td|table/tbody/tr/td');

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut
    Merci pour té réponse.

    Hummm ... je ne connais pas du tout xpath ...

    Avec un truc comme ca je récupère des infos mais c'est en ligne ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $htmlDoc = new DomDocument();
    @$htmlDoc->loadhtml($html);
    $xpath = new DOMXPath( $htmlDoc );
    $nodelist = $xpath->query( "//body" );
    foreach ($nodelist as $n){
        echo $n->nodeValue."\n";
    }
    Donne :
    Cours Nyse Euro 54.21 (c) EUR Variation 5.53% Dernier échange 08/03/13 17:35:00
    Mais je ne vois pas comment afficher les infos dans un tableau ou récuprer mes TD pour faire un tableau ...

    Une chose du genre ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nodelist = $xpath->query( "table/tr/td" );
    Merci d'avance.

  4. #4
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    au lieu de faire echo tout de suite, tu peux stocker dans un tableau ou pondre tes propres balises...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo '<ul>';
    foreach ($nodelist as $n){
        echo  '<li>',$n->nodeValue, '</li>';
    }
    echo '</ul>';
    j'ai pas fait de xpath depuis longtemps... table//td ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut
    Parfait, en cherchant un peu dans firefox (firebug) il y a une fonction qui permet dextraire le chemin xpath donc c'est nickel, merci pour ton aide

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 416
    Par défaut
    Pour ceux que cela intéresse il y a une doc assez bien faite (et en français) sur xpath sur ce lien http://msdn.microsoft.com/fr-fr/library/ms256471.aspx

Discussions similaires

  1. [DOM] Parser du html avec DOMDocument et XPath
    Par snorky94 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/04/2013, 17h35
  2. [SQL] trie colonnes tableau html avec order by
    Par digger dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2007, 16h01
  3. [RegEx] Parser tableau html
    Par php_de_travers dans le forum Langage
    Réponses: 5
    Dernier message: 29/11/2006, 07h50
  4. [XSLT] aide pour faire un tableau HTML avec fusion de lignes
    Par utwor dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 02/01/2006, 21h41
  5. [VB6] recuperer des valeurs ds un tableau html avec vb!!
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/12/2004, 13h02

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