2016-03-09 51 views
2

我想解析一個表並輸出另一個表中的明文。這一步我已經得到了:PHP - 簡單的HTML DOM解析器 - 當html好時得到致命錯誤

<?php 
    if (url_exists($url)) 
    { 
     $html = file_get_html($url); 
    } 
    else 
    { 
     echo "URL doesn't exist."; 
    } 

    if ($html && is_object($html) && isset($html->nodes)) 
    { 
     // Everything checks out 
     $table = $html->find('table[border]'); 
     if (!empty($table)) 
     { 
     $row = $table->find('tr'); 
     } 
    } 
    else 
    { 
     echo "Fetched page is not ok."; 
    } 
?> 

這會返回一個錯誤: 致命錯誤:Call to a member function find() on a non-object in /var/www/html/jsudimak/mailman/webdev-test1.php on line 78

78號線是這個:$row = $table->find('tr');

這意味着:

  • 的HTML是有效的
  • 我想解析的表也是有效的

因此,令我困惑的是find()方法仍然返回此錯誤。

過去幾天我已經深入研究了這個錯誤的原因,我還沒有找到解決方案。我也嘗試了一些其他的解析工具,但沒有運氣。幫助我與這個傢伙調試!!!!

順便說一句,我使用簡單的HTML Dom解析器來解析表。

+0

您是否嘗試過使用'$行= $表 - >找到(「TR」 )[0];'? – Nadir

+1

@Nadir以及爲什麼通過這種方式它不應該得到錯誤? – fusion3k

+0

$ html-> find('table [border]');和$ table-> find('tr');是同一類中的這些查找功能嗎? –

回答

2

使用$table = $html->find('table[border]')[0];

文檔說,除非你指定的功能find()的索引,它會返回一個數組

相關問題