2012-03-07 4 views
3

У меня есть таблица такой это:Как я могу получить Td значения, используя DOM и PHP

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

'getElementsByTagName' всегда возвращает' DOMNodeList', так что вы должны сделать '$ tables-> пункт (0) -.> getElementsByTagName ('тд')' – Gordon

ответ

6

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

  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

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

, например

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

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

+0

имеет идентификатор, но не идентификаторы для
с Во всяком случае , Я должен использовать теги вместо id. – mustafa