У меня есть таблица такая:
<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"; } ?>
С этим кодом возникает несколько проблем:
DOMDocument::loadHTMLFile()
, а не loadHTML()
как вы это делали. Используйте $dom->loadHTMLFile("figures.html")
. getElementsByTagName()
в DOMNodeList
как вы это делали (в $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
(хотя я уверен, что вы хотите сделать это с помощью таблицы.
Вы должны использовать цикл for для отображения множественных td's
с атрибутами id
в нем, так что каждый td
должен означать другой id
в html-файле
например
for($i=1;$i<=10;$i++){ echo "<td id ='id_".$i."'>".$tdvalue."</td>"; }
а затем снова вы можете получить значения td
, просто перебирая другой для цикла через getElementById