简单的html dom find给出错误试图获取非对象的属性

时间:2016-06-15 03:42:30

标签: php html simple-html-dom

我使用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看起来像这样,我试图用类信息获得第二个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";
 ?>

实现这一目标的任何可能的解决方案?

2 个答案:

答案 0 :(得分:3)

如果您提供索引:

$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元素? 部分。

答案 1 :(得分:1)

您可以通过以下方式获得结果:

<?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";