0

別のサイトから div を取得しようとしています。私はこれを試しましたが、うまくいきません:

<?php
$page = file_get_contents('http://lemans.net.pl/wroclaw');

$doc = new DOMDocument();
$doc->loadHTML($page);
$div = $doc->getElementByID('part');
     echo $div->nodeValue;
?> 
4

1 に答える 1

1

DOMDocument に興味があったので、少し実験してみました。次のデモ プログラムを作成して、役立ついくつかの重要な概念を説明しました。

<?php
$page = file_get_contents('http://lemans.net.pl/wroclaw');

$doc = new DOMDocument();
$doc->loadHTML($page);

$doc->validateOnParse = true;

$div = $doc->getElementById('part');

echo "<br>------------------------------------------------------------<br>";
echo $tag = $div->hasChildNodes()?" hasChildNodes":" hasNoChildNodes";
echo "<br>------------------------------------------------------------<br>";
echo $div->tagName;
echo "<br>------------------------------------------------------------<br>";
$elements = $div->getElementsByTagName('*');
echo $elements->length;
echo "<br>------------------------------------------------------------<br>";
foreach ($elements as $node) {
  echo $node->tagName . " - href: " . $node->getAttribute('href') . "<br>";
}
echo "<br>------------------------------------------------------------<br>";
echo htmlspecialchars($doc->saveHTML($div));
echo "<br>------------------------------------------------------------<br>";
echo $doc->saveHTML($div);
echo "<br>------------------------------------------------------------<br>";
?> 

PHP Fiddle はhttp://phpfiddle.org/main/code/8hf-nrk (実行ボタンをクリック...)で試すことができます。

いくつかの説明と注意事項

(1) ドキュメントをロードすると、適切にエンコードされない特殊文字や、パーサーを混乱させるネストされたタグに関連する警告のリストが表示される場合があります。

(2)validateOnParseオプションは違いがないように見えますが、念のため入れておきます。

(3) ドキュメントからノードを取得し、 に格納すると$div、使用できる DOM フラグメントが得られます。tagNameの取得、確認などを行うことができますhasChildNodes。ちなみに、nodeValuedivにはコンテンツがなく、子要素だけであるため、NULLまたは空です。

(4)getElementsByTagNameすべての子ノードのリストを取得するために使用できます。foreachタグ名と属性の 1 つをリストするループを参照してください。

div(5)とその子コンテンツをエコーアウトしようとしている場合は、 を使用しますsaveHTML。生のコードを渡すことで確認することhtmlspecialcharsも、div をドキュメント フローに直接挿入して、アクティブなリンクとロゴ イメージを表示することもできます。

これはあなたの道に役立つはずだと思います。幸運を!

于 2013-03-28T17:28:58.033 に答える