Мы обновляем наше ПО до PHP 7.2.3, и у меня есть следующий фрагмент кода, который отлично работал в предыдущих версиях:
$doc = new DOMDocument();
$doc->loadHTML("<html><body>".($_POST['reportForm_structure'])."</body></html>");
$root = $doc->documentElement->firstChild->firstChild->firstChild;
file_put_contents('D:\testoutput.txt', print_r($root ,true));
foreach($root->childNodes as $child) {
if ($child->nodeName == "ul") {
foreach($child->childNodes as $ulChild) {
$this->loadNodes($ulChild, $this->report);
}
}
}
file_put_contents
только для исследования ошибок.
Я получаю следующую ошибку: Invalid argument supplied for foreach()
.Сообщение относится к строке кода, где находится первый цикл foreach.Таким образом, структура данных не инициализирована правильно.Я вижу, что преобразование из HTML в DOMDocument больше не работает должным образом.Когда я проверяю вывод file_put_contents
, я вижу, что $root
является DOMText объектом вместо DOMElement объекта, но почему? Когда передается аргументиз loadHTML
непосредственно в file_put_contents
,
file_put_contents('D:\testoutput.txt', print_r("<html><body>".($_POST['reportForm_structure'])."</body></html>", true);
вывод выглядит как правильный HTML, поэтому я запутался, что больше не работаю.
<html><body><ul class="ltr">
<li class="open last" id="root" rel="root">
<a href="#"><ins> </ins>HeaderText</a>
<ul><li class="open last" id="id1" rel="header"><a href="#"><ins> </ins>Test123</a>
<ul><li class="open leaf last" id="id2" rel="header"><a class="clicked" href="#"><ins> </ins>Test456</a></li></ul></li></ul></li>
Кто-нибудь знает, как решить эту проблему.Я что-то упустил в конфигурации здесь?