2013-06-05 62 views
0

在此腳本中,我加載了一個包含80個項目的URL。在simple_html_dom迭代每個項目'tr'的幫助下,總數爲80.PHP foreach循環無法正常工作 - 在半數迭代後死亡

但是foreach循環僅迭代以下代碼中的42個項目。

<?php 
include_once "simple_html_dom.php"; 
$job_links=array(); 
$main_url = "http://xyz.com/rescnt=80"; 
$html = new simple_html_dom(); 
$html->load_file($main_url); 
$fun = $html->find('div[class=dontent_wrap]',0)->find('table',0); 
$i=0; 
echo count($fun->find('tr')); 
foreach($fun->find('tr') as $tr){ 
    echo ++$i; 
    $td = $tr->find('td',1); 
    $a = $td->find('a',0); 
    $link = $a->href; 
    $id = $a->id; 
     $id = trim(preg_replace('/link/','',$id)); 
    $my_link ="http://xyz.com/details/".$id.".html"; 
    if(strpos($link, $my_link)!==false){ 
     $job_links[] =trim($my_link); 

    } 
} 
echo 'count:'.count($job_links); 
print_r($job_links); 
?> 

在從它完成迭代循環除去幾行81

foreach($fun->find('tr') as $tr){ 
    echo ++$i; 
    $td = $tr->find('td',1); 
} 

我不知道發生了什麼錯誤。它已經耗盡了我的一天。

這不是超時問題,因爲我用set_time_limit(0);不起作用。

如果redured到40,則循環迭代21再次同樣的問題項目「TR」的數量(它也告訴沒有超時的問題)

所有的項目都是相同的,有相同的類型和相同元素的數量。

+0

是否引發錯誤?這可以解釋爲什麼它只能通過一半。 – Pudge601

+0

@ Pudge601不,它不會拋出任何錯誤。它簡單地停止工作進一步執行 –

+1

致命錯誤:調用第14行中的非對象中的成員函數find()。第14行:$ a = $ td-> find('a',0) ;也許這可能有幫助? – sinisake

回答

0

一個TD從HTML丟失,現在看來,這樣:

include("simple_html_dom.php"); 
$job_links=array(); 
$monster_main_url = "http://jobsearch.monsterindia.com/searchresult.html?day=1&res_cnt=80"; 
$html = new simple_html_dom(); 
$html->load_file($monster_main_url); 
$fun = $html->find('div[class=dd_content_wrap]',0)->find('table',0); 
$i=0; 
echo count($fun->find('tr')); 

foreach($fun->find('tr') as $tr){ 
    echo ++$i; 


    $td = $tr->find('td',1); 
    if($td!=NULL) { 
    $a = $td->find('a',0); 


    $link = $a->href; 
    $id = $a->id; 
     $id = trim(preg_replace('/link/','',$id)); 
    $my_link ="http://jobs.monsterindia.com/details/".$id.".html"; 
    } 

    else { 

     $my_link="no link"; 

    } 
    if(strpos($link, $my_link)!==false){ 
     $job_links[] =trim($my_link); 

    } 
} 
echo '<br>count:'.count($job_links); 
print_r($job_links); 
0

在打開的錯誤:

ini_set('display_errors', 1); 
error_reporting(E_ALL & ~E_NOTICE); 

把那個就在你的文件的開頭。