我正在尝试使用simplehtmldom脚本来获取某些文本。 HTML结构如下
<div id="posts">
<div align="center">
<SEVERAL LEVELS OF HTML>
<strong>XXX</strong>
</SEVERAL LEVELS OF HTML>
</div>
<div align="center">
<SEVERAL LEVELS OF HTML>
<strong>IGNORE</strong>
</SEVERAL LEVELS OF HTML>
</div>
<div align="center">
<SEVERAL LEVELS OF HTML>
<strong>IGNORE</strong>
</SEVERAL LEVELS OF HTML>
</div>
</div>
我想要获得的文字是XXX字符串,位于<strong>
内的第一个<div>
标记内,其中align="center"
属性<div>
位于id="posts"
内与<div align="center">
。我对print_r
标签中的文字不感兴趣。
“几个级别的HTML”包括凌乱的嵌套表等。
我的代码:我正在使用后代选择器,显然我正在“跳过”几个级别的html。这是我的"Trying to get property of non-object"
显示$html = file_get_html($page_1);
$es = $html->find('div#posts div[align=center] strong');
print_r($es->plaintext); die;
的原因吗?
"Trying to get property of non-object"
奇怪的是,这句话也会返回相同的$es = $html->find('div#posts');
结果。我做错了什么?
{{1}}
答案 0 :(得分:0)
2个可能的原因:
$html = file_get_html($page_1);
中,$page_1
可能不是网址。如果它是包含html的字符串,请使用str_get_html
代替$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');
。div#posts
(不应该)。