2016-07-08 19 views
1

外部ページのDOM要素を取得しようとしています。私が試している他の投稿に基づいて:domDocumentがノード情報を返さない

$html = htmlentities(file_get_contents('http://www.slate.com'));  
$dom = new domDocument; 
$dom->loadHTML($html); 
echo "<pre>"; 
var_dump($dom); 
echo "</pre>"; 

(Htmlエンティティは警告を殺しますが、そうでなければ放置すると同じ結果になります)

私が読んだことに基づいて、これは親子ノードのさまざまなDOM部分を返すはずです。しかし、上記のコードの結果にはDOMノードはなく、ページ全体のHTMLを含む巨大な "textContent"要素のみが含まれています。

私が間違っていることを前もって考えていただきありがとうございます。

+0

。あなたは 'htmlentities'の後でDomDocumentをロードできません – splash58

答えて

1

これは

DOMNode 

オブジェクトを返します。

また、取り出すHTMLコードが混乱するのでhtmlentitiesを取り除いてください。たとえば<&ltとなります。loadHTML<と解釈されません。 Disable warnings when loading non-well-formed HTML by DomDocument (PHP)

ダミーダンプ:見てみましょう

function dump(DOMNode $node) 
{ 
    echo $node->nodeName; 
    if ($node->hasChildNodes()) 
    { 
     echo '<div style="margin-left:20px; border-left:1px solid black; padding-left: 5px;">'; 
     foreach ($node->childNodes as $childNode) 
     { 
      dump($childNode); 
     } 
     echo '</div>'; 
    } 
} 

dump($dom->documentElement); 

に似ています:あなたは警告が `libxml_use_internal_errors(true)を`使用sisableしたい場合は

Dummy-Dump

+0

私はどこに行かなければならなかったのですか?ありがとう! – daprezjer

0

phpQuery(https://github.com/electrolinux/phpquery)の使用を検討する必要があります。あなたは

$dom->documentElement 

を探している

+0

@daprezjerが何であるかわからないので、スズメの砲弾を撮影するように見えます... – SpazzMarticus

関連する問題