別のサイトから div を取得しようとしています。私はこれを試しましたが、うまくいきません:
<?php
$page = file_get_contents('http://lemans.net.pl/wroclaw');
$doc = new DOMDocument();
$doc->loadHTML($page);
$div = $doc->getElementByID('part');
echo $div->nodeValue;
?>
別のサイトから div を取得しようとしています。私はこれを試しましたが、うまくいきません:
<?php
$page = file_get_contents('http://lemans.net.pl/wroclaw');
$doc = new DOMDocument();
$doc->loadHTML($page);
$div = $doc->getElementByID('part');
echo $div->nodeValue;
?>
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
。ちなみに、nodeValue
divにはコンテンツがなく、子要素だけであるため、NULLまたは空です。
(4)getElementsByTagName
すべての子ノードのリストを取得するために使用できます。foreach
タグ名と属性の 1 つをリストするループを参照してください。
div
(5)とその子コンテンツをエコーアウトしようとしている場合は、 を使用しますsaveHTML
。生のコードを渡すことで確認することhtmlspecialchars
も、div をドキュメント フローに直接挿入して、アクティブなリンクとロゴ イメージを表示することもできます。
これはあなたの道に役立つはずだと思います。幸運を!