使用simplehtmldom获取文本片段

时间:2011-02-09 10:23:17

标签: php dom

我正在尝试使用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}}

1 个答案:

答案 0 :(得分:0)

2个可能的原因:

  1. $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>');
  2. html包含多个div#posts(不应该)。