Итак, мой предыдущий вопрос: PHP Преобразование HTML-таблицы в JSON был быстро отклонен как дубликат, и я все еще пытаюсь найти то, что мне нужно.Я думаю, что это в основном логическая проблема в циклах, и мне нужен кто-то еще, чтобы взглянуть на это.
Учитывая эту таблицу в качестве примера:
<table id="Details" class="DATA_TABLE DATA_TABLE_WO_TOTAL">
<tr>
<th>Application</th>
<th>Version number</th>
<th>Virtual Administration Server</th>
<th>Group</th>
<th>Device</th>
<th>Installed</th>
<th>Last visible time</th>
<th>Last connection to Administration Server</th>
<th>IP address</th>
</tr>
<tr>
<td class="sD">some text</td>
<td class="sD">10.2.5.3201</td>
<td class="sD"></td>
<td class="sD">Thin PC</td>
<td class="sD">PC#</td>
<td class="sD">date</td>
<td class="sD">date</td>
<td class="sD">date</td>
<td class="sD">ip address</td>
</tr>
<tr>
<tr>
<td class="sD">some more text</td>
<td class="sD">10.2.5.3201</td>
<td class="sD"></td>
<td class="sD">Thin PC</td>
<td class="sD">PC#</td>
<td class="sD">date</td>
<td class="sD">date</td>
<td class="sD">date</td>
<td class="sD">ip address</td>
</tr>
</table>
Мне нужно создать массив (который я позже смогу преобразовать в json), в котором теги th - это ключи, а затем все теги td внутри друг друга.данные, соответствующие этим ключам.У меня есть следующий код php:
<?php
$dom = new DOMDocument;
$dom->loadHTML($cleantable2); //this is the table above
$xpath = new DOMXPath($dom);
foreach($xpath->query('//table/tr') as $tr){
$tmp = [];
foreach($xpath->query('//table/tr/th', $tr) as $th){
$key = $th->textContent;
foreach($xpath->query('td', $tr) as $td){
$tmp[$key] = trim($td->textContent);
}
}
$result[]=$tmp;
}
var_dump($result);
?>
Он правильно понимает ключи, но не данные, пример вывода:
[89]=>
array(9) {
["Application"]=>
string(13) "192.168.6.104"
["Version number"]=>
string(13) "192.168.6.104"
["Virtual Administration Server"]=>
string(13) "192.168.6.104"
["Group"]=>
string(13) "192.168.6.104"
["Device"]=>
string(13) "192.168.6.104"
["Installed"]=>
string(13) "192.168.6.104"
["Last visible time"]=>
string(13) "192.168.6.104"
["Last connection to Administration Server"]=>
string(13) "192.168.6.104"
["IP address"]=>
string(13) "192.168.6.104"
}
Как видите, он выбирает только IP-адрес для каждого ключа, а не остальные данные.Что я делаю неправильно?Может кто-то помочь, а не просто отклонить это как дубликат?Я пытался выяснить это в течение более чем одного дня, я почти уверен, что моя проблема просто не работает правильно, но я ее не вижу ...
Спасибо