循环遍历xpath结果

时间:2015-07-28 13:05:40

标签: php for-loop xpath

  1. 我已经去了db并创建了一个url数组。
  2. 然后我浏览数组并使用xpath告诉我每个网址有多少链接。
  3. 这是我头疼的地方。
  4. 我对每个网址中没有对象的每个网址都有计数。所以我现在正试图收集第2部分中的每个节点值。

    我显然做错了什么但需要一些指导

     $items = array();
    $query = "SELECT * FROM `urls`";
    if( $result = mysqli_query($sql,$query));
    
      {
       // Return the number of rows in result set
      $rowcount=mysqli_num_rows($result);
     while ($row = $result->fetch_assoc()) {
       $items[] = $row;
    
     }
    
     }
        echo '<pre>';
        print_r($items);
      //  $product = array();
      echo $rowcount;
    
    for ($x=0; $x<$rowcount; $x++){
    
      $scrapeurl[$x] = $items[$x][url];
    
       echo $scrapeurl[$x];
    
       $xpath[$x] = new XPATH($scrapeurl[$x]);
    
    
         $urls[$x] = $xpath[$x]->query("//div[@class='infodata']/strong/a[contains(@id,'test_title')]/@href");
    $count[$x] = $urls[$x]->length;
    
    
       $data = array();
     for ($i=0; $i<$count[$x]; $i++){
      $data[$i]['url'] = $urls[$x]->item($i)->nodeValue;
        $data[] =  $data[$i]['url'];
    
       }
    
        echo '<pre>'; 
       print_r($data);
    

1 个答案:

答案 0 :(得分:1)

有点迟到道歉但解决了这个问题。也许太累了,但归结为几个问题。

  1. 不要总是相信浏览器在HTML中呈现的内容。看看来源!我发现that tbody as an example is filled into HTML by Firefox至少在现实中来源不同,所以我永远不会打到正确的节点。

  2. 在循环中循环 - 要记住在循环中有时你必须再次循环以向下钻取到正确的结果......

    $data = array();
     foreach($urls as $node){
         foreach($node->childNodes as $child) {
            $data[] = array($child->nodeName => $child->nodeValue);
     }
    }
    
     $data = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
     $data = iterator_to_array($data,false);