HTML ページに次のコードを使用しようとしましたが、機能しません。出力されたすべての HTML 要素を 1 つのページで取得して操作するにはどうすればよいですか?
$doc = new DOMDocument;
$doc->load('http://localhost/foo/index.php');
$items = $doc->getElementsByTagName('img');
foreach ($items as $item) {
echo $item->nodeValue . "\n";
}
編集:
$dom = new DOMDocument;
$html = 'http://localhost/foo/index.php';
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
echo $dom->saveHtml($node), PHP_EOL;
}
上記のコードは何も出力しません
コードのデバッグ:
<?php
$dom = new DOMDocument;
$html = 'http://localhost/foo/index.php';
var_dump($dom->loadHTML($html));
echo '<br />';
var_dump($dom);
echo '<br />';
var_dump($dom->saveHTML());
echo '<br />';
var_dump($dom->getElementsByTagName('a'));
echo '<br />';
foreach ($dom->getElementsByTagName('a') as $node) {
var_dump($node);
echo '<br />';
var_dump( $dom->saveHtml($node) );
echo '<br />';
}
?>
デバッグ結果:
bool(true)
object(DOMDocument)#1 (0) { }
string(170) "
http://localhost/foo/index.php
"
object(DOMNodeList)#2 (0) { }