2017-09-24 176 views
0

我就开始玩简单的HTML末日解析器和我有一些麻烦:PHP简单的HTML DOM解析器 - 环

的HTML代码如下:

<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> 

我的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); 

它接收的数据是:

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

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

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

它从数据类ul.dane接收数据,但只有一条记录,我该如何才能获取页面上的所有内容?

我知道我错过了一个循环的地方,但我有一个问题,找到wher

回答

0

你可能想

  1. 找到所有ul.dane元素
  2. 每个UL里面,搜索li元素
  3. 在每个里面,搜索div.namediv.value元素

在这种情况下,你的代码的问题是,你忘了找每个ul内的每个li元素,这将是第2步试试这个:

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; 
    } 
}