Call to a member function getElementsByTagName() on array при разборе DOMDocument в PHP

Задача: Из HTML кода взять таблицу с определенным классом и извлечь из нее элементы.

Решение: разбор через DOM.

Код (PHP):

<?php
  $content = '
  <html>
    <head></head>
    <body>
      <table class="Data-A">
        <tr>
          <th>Number</th>
          <th>ID-A</th>
          <th>ID-B</th>
          <th>TAG</th>
        </tr>
        <tr>
          <td>1</td>
          <td>328001</td>
          <td>2</td>
          <td>ABCSDE</td>
        </tr>
        <tr>
          <td>2</td>
          <td>125</td>
          <td>1</td>
          <td>XDFE</td>
        </tr>
      </table>
      <table class="Data-B">
        <tr>
          <th>Number</th>
          <th>ID-A</th>
          <th>ID-B</th>
          <th>TAG</th>
        </tr>
        <tr>
          <td>8</td>
          <td>328005</td>
          <td>2</td>
          <td>ABCSDDE</td>
        </tr>
        <tr>
          <td>2</td>
          <td>127</td>
          <td>1</td>
          <td>XDFFE</td>
        </tr>
      </table>
    </body>
  </html>
  ';

  function getElementsByClass(&$parentNode, $tagName, $className) {
    $nodes = array();
    $childNodeList = $parentNode->getElementsByTagName($tagName);
    for ($i = 0; $i < $childNodeList->length; $i++) {
        $temp = $childNodeList->item($i);
        if (stripos($temp->getAttribute('class'), $className) !== false) {
            $nodes[]=$temp;
        }
    }
     return $nodes;
   }

  $domdoc = new DOMDocument();
  $domdoc->loadHTML($content);
  $domdoc->saveHTML();

  // Get table content
  $dombody = getElementsByClass($domdoc, 'table', 'Data-A');

  // Get th
  $th = $dombody->getElementsByTagName('th');

  echo var_dump($th);
?>

Ошибка:

Uncaught Error: Call to a member function getElementsByTagName() on array

Когда возникает: Изначально в html коде есть несколько таблиц, я извлекаю таблицу с заданным классом, после я хочу получить из нее часть с th. При вызове getElementsByTagName() в $dombody (извлеченная таблица) я получаю данную ошибку. Вероятно $dombody уже не того формата.

Вопрос: как это можно сделать? Спасибо!

UPD. Вопрос решен. В getElementByClass возвращался массив. Заменил на return $temp и ошибка исчезла.


Ответы (0 шт):