如何使用dom和php获取td值

时间:2012-03-07 09:35:24

标签: php dom

我有一张这样的表:

<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";
}
?>

2 个答案:

答案 0 :(得分:6)

此代码存在多个问题:

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

    $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的所有元素(尽管我确定您希望以特定于表格的方式执行此操作。

答案 1 :(得分:0)

您应该使用for循环显示其中包含td's个属性的多个id,以便每个td必须在html文件中表示不同的id

例如

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

然后你可以通过迭代另一个for td

来获取getElementById