我使用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";
?>
实现这一目标的任何可能的解决方案?
答案 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";