PHP: чтение одной таблицы из нескольких таблиц

Я создаю проект, в котором я хочу прочитать одну таблицу 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

У вашей таблицы есть идентификатор, но это «веб-сервер», а не «таблица». Идентификаторы, будучи уникальными, позволяют нацеливаться на конкретный элемент.

Andy G 11.02.2019 11:34

@AndyG: это идентификатор, который я дал, чтобы попытаться получить элементы по идентификатору, но он не работает. Я получаю вызов неопределенного метода DOMDocument::getElementsById(). Как только я меняю это на таблицу, она работает.

We are Borg 11.02.2019 11:36
получитьэлементбиид не ..Элементы..
Andy G 11.02.2019 11:39

поделитесь файлом '/var/www/html/page.php', чтобы он работал

asimshahiddIT 11.02.2019 11:41

@AndyG: Неустранимая ошибка PHP: вызов неопределенного метода DOMElement::item()

We are Borg 11.02.2019 11:41

@asimshahiddIT: речь идет о добавленном файле page.php. Я пропустил 2 таблицы, которые мне не нужны.

We are Borg 11.02.2019 11:42

@WeareBorg Так что же говорит вам эта ошибка? Кажется, теперь он распознает DOMElement, но у него нет метода item(). Пожалуйста, попробуйте интерпретировать сообщения об ошибках.

Andy G 11.02.2019 11:44

@AndyG: я изменил его на getAttribute, и теперь я не вижу никаких данных таблицы. Любая идея, что я могу делать неправильно. Спасибо

We are Borg 11.02.2019 11:51

Иными словами, один элемент DOMElement, который возвращает getElementById, не имеет коллекции элементов. Однако у него будут дочерние узлы, поэтому вы, вероятно, можете просто опустить вызов item().

Andy G 11.02.2019 11:51

@AndyG: тоже пробовал, вся веб-страница замедляется, и я получаю 30-секундную ошибку тайм-аута для простой страницы.

We are Borg 11.02.2019 11:51

@WeareBorg Я только что увидел ваш комментарий выше, почему вы перешли на getAttribute? Какой атрибут вы пытаетесь получить?

Andy G 11.02.2019 11:52

@AndyG: Давай попробуем в чате? Спасибо.

We are Borg 11.02.2019 11:54

Давайте продолжить обсуждение в чате.

We are Borg 11.02.2019 11:54

@WeareBorg Нет, спасибо. getElementById дает один элемент, поэтому вам не нужен цикл while. Затем вы перемещаетесь по его дочерним элементам. Проверьте правильность использования методов и исправьте возможные ошибки. Удачи. На ваш первоначальный вопрос был дан ответ, который заключается в использовании идентификатора для нацеливания на конкретную таблицу/элемент.

Andy G 11.02.2019 11:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
14
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Таблица, на которую вы хотите сослаться, имеет идентификатор. Используйте этот идентификатор с getElementById, чтобы настроить таргетинг на эту конкретную таблицу/элемент.

getElementById возвращает один элемент, поэтому цикл while больше не актуален.

Это сработало. Спасибо. Каждому элементу ТД я присваивал ID, а по ID получал отдельные и потом их обрабатывал.

We are Borg 11.02.2019 12:59

Другие вопросы по теме