简单 html dom 查找给出错误尝试获取非对象的 属性

simple html dom find gives error Trying to get property of non-object

我正在使用 simple_html_dom 从网站获取文本,但它给了我

Notice: Trying to get property of non-object in C:\wamp64\www\fetch.php on line 6

网站有这个。

<div>
 <div class="info">number: (IUL)306/306/2016/68</div>
 <div class="info">published date: 14 june 2016</div>
 <div class="info">published time: 1442</div>
 <div class="info">expiry time 23 june 2016 1100</div>
<div>

我的 php 看起来像这样,我正在尝试使用 class 信息获得第二个 div。

<php?include_once('simple_html_dom.php');
$html = file_get_html('http://www.example.com');
$html->save();

foreach($html->find('div[class=info]', 2) as $e)
        $pdate = $e->innertext . '<br>';

 echo "pdate: $pdate";
 ?>

有什么可能的解决方案吗?

如果您提供索引:

$html->find('div[class=info]', 2)
                               ^ this one

您将直接获取元素。所以你不妨直接使用 ->innertext 。你已经得到了第三个元素:

$info = $html->find('div[class=info]', 2);
echo $info->innertext;

不需要那个foreach

如果你需要 foreach,那么就单独使用它:

$html->find('div[class=info]')
                      // ^ note: the second argument is omitted

这将为您提供找到的元素集合。示例:

foreach($html->find('div[class=info]') as $e) {
    echo $e->innertext, '<br/>';
}

这实际上在manual中有所涉及。

它在 如何找到 HTML 元素? 部分。

您只需执行以下操作即可获得结果:

<?php
require_once('simple_html_dom.php');

$html = file_get_html('http://www.example.com');
$html->save();

$pdate  = $html->find('div[class=info]', 1)->plaintext;

echo "pdate: $pdate";