Как я могу получить значения td, используя dom и php - PullRequest
3 голосов
/ 07 марта 2012

У меня есть такая таблица:

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

И я хочу получить содержание тд. Но я не мог справиться с этим.

<?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 ]

6 голосов
/ 07 марта 2012

Есть несколько проблем с этим кодом:

  1. Для загрузки из файла HTML вам нужно использовать DOMDocument::loadHTMLFile(), а не loadHTML(), как вы это сделали.Используйте $dom->loadHTMLFile("figures.html").
  2. Вы не можете использовать 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 (хотя я уверен, что вы хотите сделать это в виде таблицы.

0 голосов
/ 07 марта 2012

Вы должны использовать цикл for для отображения нескольких td's с id атрибутами в нем, так что каждый td должен обозначать различные id в html-файле

, например

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

, а затем снова вы можете получить значения td, просто повторив еще один цикл по getElementById

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...