我们可以在DomDocument中使用Array Element并嵌套xpath吗?

时间:2012-02-05 20:47:35

标签: php arrays xpath nested domdocument

我正在使用以下代码

    $page_data=array();//$title_links is array having urls
     $nodearr=array();
    foreach ($title_links as $b_url)
    {
        $page_data[]= mycurl($b_url);//my curl function, it is okay

        $dom2 = new DOMDocument();//creating new domdocument object inside a domdocument object
        @$dom2->loadHTML($page_data[]); 
        $xpath_cat = new DOMXPath($dom2);//same as domdocument , nesting xpath
        $nodelist = $xpath_cat->query('//span[@class="zg_hrsr_ladder"]', $dom2);
//echo nodeslist;

foreach ($nodelist as $node) {
   $nodearr[] = $node->textContent;
 }


    }

所以现场是,

  

  • 我在其他'DomDocument'中嵌入'domdocument'
  •   使用'foreach loop',我在DomDocument中插入数组元素   
  • aslo,因为我是domdocument中的nestind domdocument,所以我是   声明新的xpath查询

  • 问题是......

  • 这样做可以吗?这是一种可接受的编程技术吗?
  • 优点和缺点?
  • 任何替代品吗?

      

    澄清:

  • $ title_links是使用curl获得的,它是网址   使用domdocument和xpath查询从网页中提取。
  • 所以   $ title_links位于xpath和domdocument的第一级,以及$ nodelist   是嵌套od xpath和dom-document

    的第二级
  • 1 个答案:

    答案 0 :(得分:0)

    你失败的原因是:@$dom2->loadHTML($page_data[]);

    []只能用于作业,而不能用于阅读。你需要actullay有一个你可以参考的密钥。我可能会这样做:

    $page_data=array();//$title_links is array having urls
    foreach ($title_links as $key => $b_url)
    {
        $page_data[$key]= mycurl($b_url);//my curl function, it is okay
    
        $dom2 = new DOMDocument();
        $dom2->loadHTML($page_data[$key]); // error suppression is evil!
        $xpath_cat = new DOMXPath($dom2);
    
    }
    

    我仍然不清楚这里是否有任何嵌套,你没有嵌套任何你只是在数组上迭代的东西。