2014-04-26 50 views
2

我試圖使用simplehtmldom(http://simplehtmldom.sourceforge.net/)打印出表的第n行。目前沒有任何反應,還有什麼我需要做的?PHP以dom返回html表的第n行

<?php 
include 'simple_html_dom.php'; 
$html = file_get_html('http://www.masjid-umar.org/downloads/timetable_apr.htm'); 
$ret = $html->find('tr', 9); 
echo $ret; 
?> 
+0

我無需更改即可從代碼中獲取輸出。 TUE 1 – rmcfrazier

+0

謝謝。我會在另一臺機器上再試一次。出於好奇,輸出是以「1」結尾還是用於限制字符的計算器評論系統? – user3213056

+0

這是評論的字符限制。 – rmcfrazier

回答

1

假設第9行是TUE行,你也可以使用PHP的內置DOM文檔,這將節省一些內存和解析時間,而不是依靠第三方腳本做到這一點。

<?php 
$html = file_get_contents('http://www.masjid-umar.org/downloads/timetable_apr.htm'); 
$dom = new DOMDocument(); 
@$dom->loadHTML($html); 

//TUE 1 1 4.37 6.39 1.08 5.35 9.18 6.00 1.30 6.30 7.42 9.40     
echo ' 
<table> 
    <tr>'; 
foreach($dom->getElementsByTagName('table') as $table) { 
    echo innerHTML($table->getElementsByTagName('tr')->item(9)); 
} 
echo ' 
    </tr> 
</table>'; 

function innerHTML($current){ 
    $ret = ""; 
    $nodes = @$current->childNodes; 
    if(!empty($nodes)){ 
     foreach($nodes as $v){ 
      $tmp = new DOMDocument(); 
      $tmp->appendChild($tmp->importNode($v, true)); 
      $ret .= $tmp->saveHTML(); 
     } 
     return $ret; 
    } 
    return; 
} 
?> 

你也想看看緩存結果的一天,該網站是slooow,P

1

0是第一行,所以8將是第九名:

$ret = $html->find('tr', 8);