2011-09-15 23 views
1

我想從使用php domddocument的指定網址獲得id ='myid'的完整html表並將其打印到我們的網頁,我該怎麼做?使用php domdocument獲取完整的表格並打印它

我想用下面的代碼來獲取表,但我不能得到trs(錶行)和tds(表數據)和其他內部的html。

$xml = new DOMDocument(); 

@$xml->loadHTMLFile($url); 
foreach($xml->getElementById('myid') as $table) 
{ 
    // now how to get tr and td and other element ? 
    // i am getting other element like :- 
    $links = $table->getElementsByTagName('a'); 
    foreach($links as $innerAnchor) 
    { 
    //doing something with anchor tag... 
    } 

} 

需要幫助。

我是新的php domddocument。

非常感謝。

+0

HTML的例子? – ajreal

+0

在調試的時候拿@ off'@ $ xml',那麼至少你會看到錯誤......你一般做的事情看起來是正確的,但對我來說已經很晚了,而且我已經喝了幾杯酒,所以我必須在清晨醒來時更清醒地看... – Endophage

+0

@ajreal,html是從$ xml-> loadHTMLFile函數中傳遞的url給出的,它可以是任何東西將是一個有效的網址。 – Bajrang

回答

4

正如我評論說最好不要使用getElementById。更好地分析我的測試樣本;它的工作原理

$html = "<table ID='myid'><tr><td>1</td><td>2</td></tr><tr><td>4</td><td>5</td></tr><tr><td>7</td><td>8</td></tr></table>"; 

$xml = new DOMDocument(); 
$xml->validateOnParse = true; 
$xml->loadHTML($html); 

$xpath = new DOMXPath($xml); 
$table =$xpath->query("//*[@id='myid']")->item(0); 

// for printing the whole html table just type: print $xml->saveXML($table); 

$rows = $table->getElementsByTagName("tr"); 

foreach ($rows as $row) { 
    $cells = $row -> getElementsByTagName('td'); 
    foreach ($cells as $cell) { 
    print $cell->nodeValue; // print cells' content as 124578 
    } 
} 
+0

理論上這應該工作,但你不可能知道元素表的深度是完全位於在二級(如你的例子)。 – ajreal

+0

不,// *忽略深度。此字符串給出相同的結果:[代碼] 「<表ID = '本身份識別碼'>​​1​​2​​4​​5​​7​​8」 – mishau

+0

@mishau,但我想要在我的網頁中打印完整的html表格,其中所有內容都喜歡錨點,img,內部表tr tds,p等等。而$ cell-> nodeValue僅打印文本不是所有其他元素。 – Bajrang

相關問題