Проверьте, существует ли DOMnode перед вызовом его функций-членов - PullRequest
0 голосов
/ 27 июня 2018

При анализе большого HTML-файла я получаю эту фатальную ошибку:

Неустранимая ошибка: необученная ошибка: вызов функции-члена getElementsByTagName () со значением NULL

Проблема возникает, когда мой скрипт пытается использовать функцию-член DOMnode для несуществующего элемента в таблице. Вот небольшой фрагмент кода, который демонстрирует проблему:

<?php
$html = "
<table>
  <tr>
    <td>Foo 0</td>
    <td>Bar 0</td>
  </tr>
  <tr>
    <td>Foo 1</td>
    <td>Bar 1</td>
  </tr>
</table>
";

$dom = new domDocument;
$dom->loadHTML($html);

// Ok
$foo_0 = $dom->getElementsByTagName('td')[0]->textContent;
$bar_0 = $dom->getElementsByTagName('td')[1]->textContent;

// Ok
$foo_1 = $dom->getElementsByTagName('td')[2]->textContent;
$bar_1 = $dom->getElementsByTagName('td')[3]->textContent;

// No ok -> How to check if it exists ?
$foo_2 = $dom->getElementsByTagName('td')[4]->textContent;

?>

Неустранимая ошибка возникает, когда скрипт пытается получить доступ к 4-му элементу td.

1 Ответ

0 голосов
/ 27 июня 2018

Спасибо @Jonathan за решение:

if(!is_null($dom->getElementsByTagName('td')[4])){
  $foo_2 = $dom->getElementsByTagName('td')[4]->textContent;
}
...