2

boomkat.com RSS フィードから新しいリリースのデータベースを作成しようとしています。フィードはここにあります: リンク

現在、段落タグ内のものの選択に問題があります。

RSS フィードの 1 つの段落は次のようになります。

<p>GOAT<br/><a href="http://boomkat.com/downloads/601228-goat-world-music">World Music</a><br/>ROCKET RECORDINGS<br/>INDIE / ROCK / ALTERNATIVE<br/>MP3 Release</p>

これまでに行ったことは次のとおりです。

<?php

$dom = new DOMDocument;
$dom->validateOnParse = true;
$dom->load("http://feeds.boomkat.com/boomkat_downloads_just_arrived");
$content = $dom->getElementsByTagName('content');
foreach ($content as $result) {
    echo $result->nodeValue, PHP_EOL;
}
?>

しかし、それは私に完全なフィードを与えます。getElementsByTagName に 'p' を記述しても機能しません。

4

2 に答える 2

2

DOMDocument :: load()の代わりにDOMDocument :: loadHTMLFile()メソッドを使用することをお勧めします(load()は厳密にHTMLではなくXMLを読み取るためのものであるため)。

ドキュメント全体を取得する理由は、「コンテンツ」と呼ばれる要素についてドキュメント全体をクエリしているためです。そのようなHTML要素はありません。代わりに使用する必要があります

$dom->getElementsByTagName('p');

これにより、HTMLドキュメント内のすべてのタグが取得され、ループすることができます。「p」を使用したタグのクエリが機能しない主な理由は、ドキュメントを厳密なHTMLとしてロードする必要があり、デフォルトのXMLを使用しないためです。

于 2012-11-08T14:58:25.530 に答える
1

わかりました。問題が発生している理由はわかりませんが、提供されたURLで提案した内容を試して、各<p>タグのすべてのテキストを適切に印刷しました。

コードは次のとおりです。

$doc = new DOMDocument();
$doc->loadHTMLFile("http://boomkat.com/downloads/601228-goat-world-music");
$content = $doc->getElementsByTagName("p");

foreach($content as $element) {
    Util::debug($element->textContent); // helper method similar to PHP's var_dump()
}

画面に印刷できた結果は次のとおりです。

string(91) "Residual Echoes have come up with a really rather lovely disc of psychedelic folk goodness."

string(8) "MAMMATUS"

string(8) "Mammatus"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £2.95FLAC Download // £3.95"

string(0) ""

string(19) "SERPENTINA SATELITE"

string(16) "Mecanica Celeste"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £3.95FLAC Download // £4.95"

string(0) ""

string(12) "SUNCOIL SECT"

string(25) "One Note Obscures Another"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £6.99FLAC Download // £7.99"

string(0) ""

string(16) "TEETH OF THE SEA"

string(10) "Hypnoticon"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £2.50FLAC Download // £3.50"

string(52) "Proggy kosmiche rock from London's Teeth Of The Sea."

string(16) "TEETH OF THE SEA"

string(21) "Orphaned By the Ocean"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £5.99FLAC Download // £6.99"

これはあなたがコードでやっていたことでしたか?

于 2012-11-09T17:00:50.533 に答える