2012-03-07 34 views
3

我怎样才能TD值,我有这样这样的表:使用DOM和PHP

<table> 
<tr> 
    <td>Values</td> 
    <td>5000</td> 
    <td>6000</td> 
</tr> 
</table> 

我想TD的内容。但我无法管理它。

<?PHP 
$dom = new DOMDocument(); 
$dom->loadHTML("figures.html"); 
$table = $dom->getElementsByTagName('table'); 
$tds=$table->getElementsByTagName('td'); 

foreach ($tds as $t){ 
    echo $t->nodeValue, "\n"; 
} 
?> 
+0

'getElementsByTagName'总是返回'DOMNodeList'所以你必须做'$表 - >项目(0) - >的getElementsByTagName( 'TD')' – Gordon 2012-03-07 10:19:19

回答

6

有多种问题与此代码:

  1. 要从HTML文件加载,你需要使用DOMDocument::loadHTMLFile(),不loadHTML()为你做了。使用$dom->loadHTMLFile("figures.html")
  2. 您不能像那样使用getElementsByTagName()(在$table上)。它只能在DOMDocument上使用。

你可以做这样的事情:

$dom = new DOMDocument(); 
$dom->loadHTMLFile("figures.html"); 
$tables = $dom->getElementsByTagName('table'); 

// Find the correct <table> element you want, and store it in $table 
// ... 

// Assume you want the first table 
$table = $tables->item(0); 

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

或者,你可以只直接搜索与标签名td所有元素(虽然我敢肯定,你想要做一个表,具体说。方式

0

应该使用一个for循环中显示多个td'sid属性,它使得每个td必须表示在HTML文件中的不同id

例如

for($i=1;$i<=10;$i++){ 
echo "<td id ='id_".$i."'>".$tdvalue."</td>"; 
} 

,然后再次,您可以通过迭代另一个for循环来获取tdgetElementById

+0

有ID,但​​没什么IDS不管怎么说,我应该使用标签而不是id。 – mustafa2012-03-07 09:55:37