2011-02-09 8 views
0

私はsimplehtmldomスクリプトを使用してテキストを取得しようとしています。simplehtmldomを使用してテキストスニペットを取得

<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> 

私はid="posts"<div>内にある属性align="center"、と最初<div>の内側に最初<strong>タグで、XXXの文字列である時に取得しようとしているテキストを次のようにHTMLの構造があります。私は<div align="center">タグのテキストには興味がありません。

「HTMLのいくつかのレベルが」など

私のコードを乱雑ネストした表が含まれています。私は、子孫のセレクターを使用していますし、明らかに私は、HTMLのいくつかのレベルを介して「スキップ」しています。これが私のprint_r"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'); 

答えて

0

2つの考えられる理由:

  1. $html = file_get_html($page_1);において、$page_1がURLではないかもしれません。 htmlを含む文字列の場合は$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');のようにstr_get_htmlを使用してください。
  2. htmlには複数のdiv#postsが含まれています。
関連する問題