3

我正在尝试使用简单的 html dom 来解析我的 html 数据。但是每当我使用下面的代码时,我都会收到错误:-

Trying to get property of non-object

我的代码是:-

foreach($html->find('div.row') as $val)
        {
            $name = $val->find('h1')->innertext;
            echo $name;
        }

但是当我这样使用它时,我得到了正确的结果:-

foreach($html->find('div.row') as $val)
        {
            foreach($val->find('h1') as $v)
             echo $v->innertext;
        }
4

2 回答 2

2

find()方法返回一个数组,除非您将索引指定为第二个参数。您的第二段代码在遍历数组并获取数组innertext中的每个元素时起作用,而您的第一段代码试图获取innertext实际数组的属性。

如果您想获得例如的第一次(或唯一一次)出现h1,请执行以下操作:

$name = $val->find('h1', 0)->innertext;
于 2013-04-02T11:34:49.473 回答
0

试试这个

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

$elements = $dom->getElementsByTagName('div');
foreach ($elements as $child) {
    echo $child->nodeValue;
}
于 2013-04-02T11:18:53.553 回答