2012-12-17 125 views
1

我新的DOM文檔.. 我有這個網站:HTML DOM文檔解析

<tr class="calendar_row" data-eventid="39657"> 
     <td class="alt1 eventDate smallfont" align="center">Sun<div class="eventday_multiple">Dec 9</div></td> 
     <td class="alt1 smallfont" align="center">3:34am</td> 
     <td class="alt1 smallfont" align="center">USD</td> 
    </tr> 

    <tr class="calendar_row" data-eventid="39658"> 
     <td class="alt1 eventDate smallfont" align="center">Sun<div class="eventday_multiple">Dec 10</div></td> 
     <td class="alt1 smallfont" align="center">5:14am</td> 
     <td class="alt1 smallfont" align="center">EUR</td> 
    </tr> 

我想獲得第一里面的內容了TR的使用此代碼:

$ret = array(); 
    libxml_use_internal_errors(true); 
    $doc = new DOMDocument(); 
    $doc->loadHTML($html); 
    //$doc->saveHTMLFile('textbox.php'); 

    $text = $doc->getElementsByTagName('tr'); 
    foreach ($text as $tag){ 
     $ret[] = $doc->saveHtml($tag); 
     echo $doc->saveHtml($tag); 
    } 

我不知道爲什麼值得迴應的是整個文件,而不是tr內的值..

第二,我想也得到這些td標籤之間的值如5:14 AM,EUR等C。但我沒有任何想法如何做到這一點。

原諒noob問題..

問候

回答

3
$doc = new DOMDocument(); 
$doc ->loadHTML("$html"); 
$tables = $doc->getElementsByTagName('table'); 
$table = $tables->item(0);//takes the first table in dom 

foreach ($table->childNodes as $td) { 
    if ($td->nodeName == 'td') { 
    echo $td->nodeValue, "\n"; 
    } 
} 
+0

不顯示任何內容:| – Vainglory07

+0

看到我的編輯,如果這也不起作用,那麼你的$ html可能是錯誤的。 –

1

傳遞一個元素saveHtml產生的元素outerHTML不是它的innerHTML,所以你得到它的標籤屬性和它的所有內容。當然,你需要運行PHP> = 5.3.6。

td之間的值可以通過$td->firstChild->nodeValue;$td->textContent;獲得,其中$td<td>

+0

對不起,我將如何使用$ TD->的textContent; ..我不知道在哪裏把它 – Vainglory07

+0

@ Vainglory07你我以前不真的是你想要的東西用它做,所以我不能說有多你會使用它。如果你不知道如何獲得'​​',只需在tr上使用getElementsByTagName即可找到。 – Musa