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

Bibliothèques et frameworks PHP Discussion :

[DOM] Parser du html avec DOMDocument et XPath


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    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
    Points : 132
    Points
    132
    Par défaut [DOM] Parser du html avec DOMDocument et XPath
    Bonjour,

    J'ai 4 DIV identiques, que je dois parser :

    Code html : 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
    <div class="detail">
    	<div class="title"> Mon objet a vendre 1</div>
    	<div class="category"> Motos </div>
    	<div class="placement"> Paris </div>
    	<div class="price"> 7000 € </div>
    </div>
     
    <div class="detail">
    	<div class="title"> Mon objet a vendre 2</div>
    	<div class="category"> Motos </div>
    	<div class="placement"> Paris </div>
    	<div class="price"> 3000 € </div>
    </div>
     
    <div class="detail">
    	<div class="title"> Mon objet a vendre 3</div>
    	<div class="category"> Motos </div>
    	<div class="placement"> Paris </div>
    	<div class="price"> 4000 € </div>
    </div>
     
    <div class="detail">
    	<div class="title"> Mon objet a vendre 4</div>
    	<div class="category"> Motos </div>
    	<div class="placement"> Paris </div>
    	<div class="price"> 1000 € </div>
    </div>

    Je souhaiterai ressortir 2 informations : title et price

    Comment faire svp, j'arrive bien à les lire à la suite.


    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
    <?php
    $queryXPath1 = '//div[@class="title"]'; //NOM
    $queryXPath2 = '//div[@class="price"]'; //PRIX
     
    $Liste_url = array('MAPAGE.html');
     
    foreach ($Liste_url as $url) 
    {
    	$dom = new DOMDocument();
    	@$dom->loadHTMLFile($url);
    	$x = new DOMXPath($dom);
     
    	//NOM
    	$nodeList = $x->query($queryXPath1);
    	foreach ($nodeList as $node)
    	{
    		$NOM = utf8_decode(urldecode($node->nodeValue.'</br></br>'));
    		echo $NOM;
        }
     
    	//PRIX
    	$nodeList = $x->query($queryXPath2);
    	foreach ($nodeList as $node)
    	{
    		$PRIX = utf8_decode(urldecode($node->nodeValue.'</br></br>'));
    		echo $PRIX;
    	}
    }		
    ?>
    Mon objet a vendre 1
    Mon objet a vendre 2
    Mon objet a vendre 3
    Mon objet a vendre 4

    7000 €
    3000 €
    4000 €
    1000 €
    Mais comment faire pour les sortir sous cette forme ?

    Mon objet a vendre 1 7000 €
    Mon objet a vendre 2 3000 €
    ...

    Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    on rempli tes variables $nom et $prix en les considérant comme des tableaux, puis on les affiche qu'à la fin:

    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
     
    <?php
    $queryXPath1 = '//div[@class="title"]'; //NOM
    $queryXPath2 = '//div[@class="price"]'; //PRIX
     
    $Liste_url = array('MAPAGE.html');
     
    foreach ($Liste_url as $url) 
    {
    	$dom = new DOMDocument();
    	@$dom->loadHTMLFile($url);
    	$x = new DOMXPath($dom);
     
    	//NOM
    	$nodeList = $x->query($queryXPath1);
            $NOM=array();
    	foreach ($nodeList as $node)
    	{
    	    array_push($NOM, utf8_decode(urldecode($node->nodeValue.'</br></br>')));
            }
     
    	//PRIX
    	$nodeList = $x->query($queryXPath2);
            $PRIX =array();
    	foreach ($nodeList as $node)
    	{
    	    array_push( $PRIX , utf8_decode(urldecode($node->nodeValue.'</br></br>')));
    	}
    }	
     
    /* traitements effectués, on passe a la présentation des données:*/
    for ($i=0; $i < (count($NOM)); $i++ )
    {
        echo $NOM[$i]." ".$PRIX[$i]."<br />";
    }
    ?>
    je pense que tu devrais supprimer les <br> qui traine dans ton code un peu n'importe ou :p

    A noter que c'est seulement faisable de cette manière car il y'a autant de nom que de prix

  3. #3
    Membre habitué
    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
    Points : 132
    Points
    132
    Par défaut
    c'est parfait, merci

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

Discussions similaires

  1. Parser tableau html avec DOMDocument
    Par snorky94 dans le forum Langage
    Réponses: 5
    Dernier message: 12/03/2013, 14h04
  2. [DOM] supprimer un noeud avec une expression xpath
    Par Fab88 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 01/06/2007, 11h45
  3. [DOM] lire un fichier avec DOMDocument
    Par pimpmyride dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/05/2007, 15h54
  4. [DOM] Faire un tri avec Domdocument
    Par starr dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/03/2007, 20h31
  5. [JAXB/DOM] Parser Xml : possible avec path reel et non uri !
    Par Jaxofun dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 01/08/2005, 10h04

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