2017-09-24 8 views
0

j'ai commencé à jouer simple HTML Doom Parser et j'ai quelques problèmes:PHP simple HTML DOM Parser - boucle

Le code HTML est comme suit:

<div class="players"> 
    <ul class="dane"> 
     <li> 
      <div class="name">Messi</div> 
      <div class="value">Barcelona</div> 
     </li> 
     <li> 
      <div class="name">Ronaldo</div> 
      <div class="value">Madryt</div> 
     </li> 
    </ul> 
</div> 

<div class="clubs"> 
    <ul class="dane"> 
     <li> 
      <div class="name">Barcelona</div> 
      <div class="value">Hiszpania</div> 
     </li> 
     <li> 
      <div class="name">Madryt</div> 
      <div class="value">Hiszpania</div> 
     </li> 
    </ul> 
</div> 

<div class="trenerzy"> 
    <ul class="dane"> 
     <li> 
      <div class="name">Ernesto Valverde</div> 
      <div class="value">Barcelona</div> 
     </li> 
     <li> 
      <div class="name">Madryt</div> 
      <div class="value">Zidane</div> 
     </li> 
    </ul> 
</div> 

Mon code PHP:

include_once('simple_html_dom.php'); 
$html = file_get_html('http://'); 

$articles = array(); 
foreach($html->find('ul.dane') as $article) { 
    $item['name']  = $article->find('div.name',0)->plaintext; 
    $item['value'] = $article->find('div.value',0)->plaintext; 
    $articles[] = $item; 
} 

print_r($articles); 

Les données qu'il reçoit est:

Array 
(
    [0] => Array 
     (
      [name] =>     Messi    
      [value] =>      Barcelona    
     ) 

    [1] => Array 
     (
      [name] =>     Barcelona    
      [value] =>      Hiszpania    
     ) 

    [2] => Array 
     (
      [name] =>     Ernesto Valverde     
      [value] =>      Barcelona    
     ) 

Il reçoit des données de la classe de données ul.dane mais seulement 1 enregistrement, comment puis-je faire pour obtenir tout ce qui est sur la page?

Je sais que je manque une boucle quelque part, mais j'ai un problème pour trouver wher

Répondre

0

Vous voulez probablement

  1. Trouver tous les ul.dane éléments
  2. l'intérieur de chaque ul, recherchez li éléments
  3. À l'intérieur de chaque li, recherchez div.name et div.value éléments

Dans ce cas, le problème avec votre code est que vous avez oublié de trouver chaque élément li l'intérieur de chaque ul, ce qui serait l'étape 2. Essayez ceci:

foreach($html->find('ul.dane') as $ul) { 
    foreach($ul->find('li') as $article){ 
     $item['name']  = $article->find('div.name',0)->plaintext; 
     $item['value'] = $article->find('div.value',0)->plaintext; 
     $articles[] = $item; 
    } 
}