如何使用dom和php获取td值

如何使用dom和php获取td值,php,dom,Php,Dom,我有一张这样的桌子: <table> <tr> <td>Values</td> <td>5000</td> <td>6000</td> </tr> </table> 价值观 5000 6000 我想得到td的内容。但我没办法 <?PHP $dom = new DOMDocument(); $dom->loadHTML("figures.

我有一张这样的桌子:

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

价值观
5000
6000
我想得到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";
}
?>

您应该使用for循环来显示包含
id
属性的多个
td
,这样每个
td
都必须在html文件中表示不同的
id

比如说

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

对于($i=1;$i此代码存在多个问题:

  • 要从HTML文件加载,您需要使用
    DOMDocument::loadHTMLFile()
    ,而不是像您所做的那样使用
    loadHTML()
    。使用
    $dom->loadHTMLFile(“figures.HTML”)
  • 您不能像(在
    $table
    上)那样在
    DOMNodeList
    上使用
    getElementsByTagName()
    。它只能在
    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";
      }
    }
    
    $dom=newdomdocument();
    $dom->loadHTMLFile(“figures.html”);
    $tables=$dom->getElementsByTagName('table');
    //找到所需的正确元素,并将其存储在$table中
    // ...
    //假设你想要第一张桌子
    $table=$tables->item(0);
    foreach($table->childNodes作为$td){
    如果($td->nodeName=='td'){
    echo$td->nodeValue,“\n”;
    }
    }
    

    或者,您可以直接搜索标记名为
    td
    的所有元素(尽管我确信您希望以特定于表的方式执行此操作。

    有id,但没有s的id。无论如何,我应该使用标记而不是id。
    getElementsByTagName
    始终返回
    DOMNodeList
    ,因此您必须执行
    $tables->项(0)->getElementsByTagName('td')