У меня есть таблица такая:
<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