Я создаю проект, в котором я хочу прочитать одну таблицу HTML, в которой есть 3 таблицы HTML, и распечатать ее содержимое. Как я могу это сделать? Как видно из приведенного ниже кода, я хочу получить элементы из элемента ROW указанной ниже таблицы. Но после этой таблицы есть еще 2 таблицы, для которых мне не нужна информация. КОГДА я запускаю код PHP, я вижу информацию из всех трех таблиц. Спасибо.
<p>
<div class = "name-block" style = "margin-left:200px; margin-top: 35px;">
<h4 style = "border: 1px solid black; display: inline;">TIM - Web Server Setup</h4>
</div>
<table id = "webserver" align = "center" class = "table-block">
<tr class = "highlight">
<td width = "100"><div>IP address</div></td>
<td width = "900" contenteditable='true'>TEST</td>
</tr>
<tr class = "highlight">
<td width = "100"><div>Netmask</div></td>
<td width = "900" contenteditable='true'>TEST</td>
</tr>
<tr class = "highlight">
<td width = "100"><div>Gateway</div></td>
<td width = "900" contenteditable='true'></td>
</tr>
<tr class = "highlight">
<td width = "100"><div>User</div></td>
<td width = "900" contenteditable='true'><div width = "900" contenteditable></td></div>
</tr>
<tr class = "highlight">
<td width = "100"><div>Password</div></td>
<td width = "900" contenteditable='true'><div width = "900" contenteditable></td></div>
</tr>
<tr class = "highlight">
<td width = "100"><div>Port</div></td>
<td width = "900" contenteditable='true'><div width = "900" contenteditable></td></div>
</tr>
</table>
</p>
<p><input type = "button" id = "bt" value = "Show Table Data"" /></p>
<?php
$data = file_get_contents('/var/www/html/page.php');
$doc = new domDocument;
@$doc->loadHTML($data);
$i=0;
while(is_object($finance = $doc->getElementsById("table")->item($i)))
{
foreach($finance->childNodes as $nodename)
{
if ($nodename->nodeName=='tr')
{
foreach($nodename->childNodes as $subNodes)
{
echo $subNodes->nodeName." - ".$subNodes->nodeValue."<br>";
}
}
else
{
echo $nodename->nodeName." - ".$nodename->nodeValue."<br>";
}
}
$i++;
}
?>
//Other 2 tables below
@AndyG: это идентификатор, который я дал, чтобы попытаться получить элементы по идентификатору, но он не работает. Я получаю вызов неопределенного метода DOMDocument::getElementsById(). Как только я меняю это на таблицу, она работает.
поделитесь файлом '/var/www/html/page.php', чтобы он работал
@AndyG: Неустранимая ошибка PHP: вызов неопределенного метода DOMElement::item()
@asimshahiddIT: речь идет о добавленном файле page.php. Я пропустил 2 таблицы, которые мне не нужны.
@WeareBorg Так что же говорит вам эта ошибка? Кажется, теперь он распознает DOMElement, но у него нет метода item(). Пожалуйста, попробуйте интерпретировать сообщения об ошибках.
@AndyG: я изменил его на getAttribute, и теперь я не вижу никаких данных таблицы. Любая идея, что я могу делать неправильно. Спасибо
Иными словами, один элемент DOMElement, который возвращает getElementById, не имеет коллекции элементов. Однако у него будут дочерние узлы, поэтому вы, вероятно, можете просто опустить вызов item().
@AndyG: тоже пробовал, вся веб-страница замедляется, и я получаю 30-секундную ошибку тайм-аута для простой страницы.
@WeareBorg Я только что увидел ваш комментарий выше, почему вы перешли на getAttribute? Какой атрибут вы пытаетесь получить?
@AndyG: Давай попробуем в чате? Спасибо.
Давайте продолжить обсуждение в чате.
@WeareBorg Нет, спасибо. getElementById дает один элемент, поэтому вам не нужен цикл while. Затем вы перемещаетесь по его дочерним элементам. Проверьте правильность использования методов и исправьте возможные ошибки. Удачи. На ваш первоначальный вопрос был дан ответ, который заключается в использовании идентификатора для нацеливания на конкретную таблицу/элемент.






Таблица, на которую вы хотите сослаться, имеет идентификатор. Используйте этот идентификатор с getElementById, чтобы настроить таргетинг на эту конкретную таблицу/элемент.
getElementById возвращает один элемент, поэтому цикл while больше не актуален.
Это сработало. Спасибо. Каждому элементу ТД я присваивал ID, а по ID получал отдельные и потом их обрабатывал.
У вашей таблицы есть идентификатор, но это «веб-сервер», а не «таблица». Идентификаторы, будучи уникальными, позволяют нацеливаться на конкретный элемент.