2013-02-02 34 views
0

這段代碼幾個月來一直運行良好。輸出包含幾行,包含給定用戶名的統計信息。從中獲取html頁面的網站未關閉,並且file_get_html中的頁面內容未更改。 突然間(我查了一下,沒有人修改它),它停止了工作。下面是相關的部分:simple_html_dom:調用一個非對象的成員函數find()

[...]if ($FileAge > ($expiretime * 60) || 0 == filesize($cachename)) 
{ 
    include_once('simple_html_dom.php'); 
    $html = file_get_html('http://www.foo.com/search?what=user%3A'.YOUR_USER.'&search=Search'); 
    var_dump($html); //TEST 
    $link = $html->find('.likeh4 lightGrey.', 0)->find('a', 0)->href; // Get the last activity link 
[...] 

錯誤日誌說:

[02-Feb-2013 17:02:19 Europe/Berlin] PHP Fatal error: Call to a member function find() on a non-object in /foo.php on line 22 (the line with $link). 

var_dump($html)bool(false)

我有一個類似的腳本來從另一個網站分析的HTML頁面。它也停止工作。

[...]include_once('simple_html_dom.php'); 
$html = file_get_html('http://my.flightmemory.com/'.FLIGHTMEMORY_USER); 
$chilometri_table = $html->find('table', 2); [...] 

我試着在我的web服務器上保存這些html頁面中的一個,但我沒有收到這樣的錯誤。 出於安全原因,我的主機是否禁用了一些php函數? (實際上,file_get_html來自simple_html_dom而不是來自php本地函數)

任何提示? 感謝

回答

1

這可能是太晚,但:
Simple_html_dom具有恆定的檢查給定的HTML大小 - MAX_FILE_SIZE。默認情況下它是600KB。這對大多數情況已經足夠了,但是如果給定的html比這個大,它會失敗並返回false並導致致命錯誤。

0

如果您試圖獲得[href] 我有同樣的問題,並修復它。 需要有效的它是一個simple_html_dom_node

if(is_a($html->find('.likeh4 lightGrey. a', 0),'simple_html_dom_node') 
    $link = $html->find('.likeh4 lightGrey. a', 0)->href; 

OR

foreach ($$html->find('.likeh4 lightGrey. a') as $links) { 
$link =$links->href; 
} 
相關問題