错误:“试图获取非对象的属性”;以及无效的foreach循环参数


Error: "Trying to get property of nonobject" and invalid foreach loop argument

我想使用简单的HTML DOM解析器来解析表的HTML。我想把每个<tr><td>标签放在一个数组中,然后把这些数组放在一个更大的数组中。

我遵循这里给出的代码作为参考。

但是当我第一次测试这段代码时,我得到了这个错误:

Notice: Trying to get property of non-object in C:'xampp'htdocs'tests.php on line 42
Warning: Invalid argument supplied for foreach() in C:'xampp'htdocs'tests.php on line 44

请告诉我为什么我得到这个错误,以及如何修复它

代码如下:

<?php
$html_string = 'Edit question</a></div></div><div class="content"><div class="formulation"><h4 class="accesshide">Question text</h4><input type="hidden" name="q18:1_:sequencecheck" value="1" /><div class="qtext"><table style="width: 454px; height: 269px;" border="1"><caption> </caption>
<tbody>
<tr>
<td>Name</td>
<td>Age</td>
<td>CGPA</td>
</tr>
<tr>
<td>Alice</td>
<td>24</td>
<td>4</td>
</tr>
<tr>
<td>Bob</td>
<td>14</td>
<td>3</td>
</tr>
<tr>
<td>Amy</td>
<td>33</td>
<td>2</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Blah BlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlah BlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlah?</p></div><div class="ablock"><div class="prompt">Select one:</div><div class="answerswer"><div class="r0"><input type="radio" name="q18:1_answer" value="0" id="q18:1_answer0" /><label for="q18:1_answer0">a. [1]ir[/1][2]34[/2]</label> </div>';
$dom = new domDocument;
@$dom->loadHTML($data);
$dom->preserveWhiteSpace = false;
$tables = $dom->getElementsByTagName('table');
echo get_inner_html($tables->item(0));
function get_inner_html( $node ) 
{
    $innerHTML= '';
    $children = $node->childNodes;
    foreach ($children as $child)
    {
        $innerHTML .= $child->ownerDocument->saveXML( $child );
    }
    return $innerHTML;
}

您在loadHTML中有另一个变量名称$data,将其更改为@$dom->loadHTML($html_string);