0

これと同等のことをする必要があります:

$tags2 = $doc->getElementsByTagName('img');
$mybody = $doc->getElementsByTagName('body');
//if there's a body tag
foreach ($mybody as $bod){
            //loop through each img element
        foreach ($tags2 as $tag) {   
           echo  '<img src=' . $tag->getAttribute('src') . '/>';
           echo  "<br/>" . $tag->getAttribute('href') ; 
        }
}

コンテキストは次のとおりです。

$str = file_get_contents('http://somewebsite.html');


$doc = new DOMDocument();
@$doc->loadHTML('<?xml encoding="UTF-8">' . $str);


$tidy = new tidy();
$tidy->parseFile($str);
$tidy->cleanRepair();

if(!empty($tidy->errorBuffer)) {
        echo "The following errors or warnings occured:\n";
        echo $tidy->errorBuffer;
}
else {
    $str = $tidy;
}

$tags2 = $doc->getElementsByTagName('img');
$mybody = $doc->getElementsByTagName('body');
foreach ($mybody as $bod){
        foreach ($tags2 as $tag) {   
           echo  '<img src=' . $tag->getAttribute('src') . '/>';
           echo  "<br/>" . $tag->getAttribute('href') ; 
        }
}

^ は、ページ、ヘッダー、サイドバーなどのすべての画像と、本文の画像を出力します。体にイメージが欲しいだけです。再帰を使用してここで見た他のいくつかの例を試しましたが、それらはスタイルまたは段落タグを取得するものであり、画像タグと画像 src 属性を適切に取得できませんでした。

body タグを取得したら、body 内の画像に対して内部ループを実行するにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

1

2 行を逆にして、smidgen を書き直すだけです。

$mybody = $doc->getElementsByTagName('body')->item(0);
$tags2 = $mybody->getElementsByTagName('img');

その理由は、Body タグが実際にはクラスの DOMElement インスタンスであり、 への同じ呼び出しを実行できるためgetElementsByTagNameです。

于 2012-08-02T17:22:33.603 に答える