在PHP中传递URL的问题

时间:2014-10-10 08:28:05

标签: php simple-html-dom

我正在URL中进行一些操作。

 $paginationPages=array();
 $productCount=intval($htmlProductPage->find('div.paging span.itemcount',0)->plaintext);
 if($productCount/16>1){
    $pagecount=ceil($productCount/16);

    for($i=2;$i<=$pagecount;$i++){
        $urlSplitArray=explode('.',$productUrl);
        $urlSplitCount=count($urlSplitArray);
        $urlSplitArray[$urlSplitCount-2].="[".$i."]";
        $paginationPages[]= implode('.',$urlSplitArray)."<br>";
    }
 #print_r($paginationPages);

}

我正在获取foreach中的所有链接以继续进行

foreach($paginationPages as $nextUrl){
  #$nextUrl="http://www.100percent.co.nz/kitchen-and-cooking/ovens/freestanding[2].htm";
  $htmlProductPage=file_get_html($nextUrl);
  foreach($htmlProductPage->find("div.Item") as $element){ //error occurs here
    echo $element->outertext;
  }
}

变量$nextUrl的值为

  

http://www.100percent.co.nz/kitchen-and-cooking/ovens/freestanding[2].htm

当我动态传递链接时,我无法找到元素div.Item。但是当我直接在for循环中分配url时,我能够找到相同的元素。为什么会这样?

1 个答案:

答案 0 :(得分:1)

由于这句话,问题正在发生:

$paginationPages[]= implode('.',$urlSplitArray)."<br>";

$paginationPages的print_r:

Array
(
    [0] => http://www.100percent.co.nz/kitchen-and-cooking/ovens/freestanding[2].htm<br>
)

您正在将<br>元素标记到页面名称的末尾,这意味着无法使用此代码检索该页面:

foreach($paginationPages as $nextUrl){
    $htmlProductPage=file_get_html($nextUrl);

我建议在解析页面之前添加file_get_html已成功检索页面的检查以清除内容。