2011-08-14 150 views
0

在下面的腳本調用一個成員函數find()方法在非對象上,我發現了一個錯誤時,未找到URL或報告404 ...致命錯誤:使用str_get_html()

致命錯誤:調用一個成員函數find()方法非對象

我怎樣才能避免它的代碼嗎?

function processPage(){ 

    $this->html = scrapePage($this->url); 

    $dom = str_get_html($this->html); 

    $metakws = $dom->find('meta[name=keywords]'); //ERROR OCCURS HERE WHEN URL NOT FOUND 

    //etc... 

    } 
+0

很難知道做什麼用只是一段代碼失敗。錯誤很明顯,'$ dom'沒有'find()'屬性。 – yoda

+0

推薦的[SimpleHtmlDom](http://simplehtmldom.sourceforge.net/)的第三方替代方案,實際使用[DOM](http://php.net/manual/en/book.dom.php)而不是字符串解析:[phpQuery](http://code.google.com/p/phpquery/),[Zend_Dom](http://framework.zend.com/manual/en/zend.dom.html),[QueryPath]( http://querypath.org/)和[FluentDom](http://www.fluentdom.org)。 – Gordon

+0

謝謝戈登。我有一位程序員在快速寫這篇文章。可以將其中的任何一個包含爲像SimpleHtmlDom一樣的PHP嗎?每次搜索需要大約10秒。我希望那些更快...... –

回答

2

檢查

if (!$dom) { /*Error*/ } 

或者

if (!is_object($dom)) { /*Error*/ } 
+1

+1我的第一個想法,它的工作原理。謝謝。 –

+0

沒問題的隊友:) –