在XML DOM(PHP)中获取段落



我正在尝试从boomkat.com rss feed创建新版本的数据库。饲料位于这里:链接

现在,我在段落标签中选择了一些内容。

RSS提要中的一个段落看起来像:

<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"不起作用。

我建议使用domdocument :: loadhtmlfile()方法而不是domdocument :: load()(as load()是严格用于读取xml,而不是html)。

您获取整个文档的原因是因为您正在向整个文档查询称为" content"的元素。没有这样的HTML元素。相反,您应该使用

$dom->getElementsByTagName('p');

这将抓住HTML文档中的所有标签,然后您可以循环浏览它。使用" P"查询标签不起作用的主要原因是因为您需要将文档加载为严格的HTML,而不使用默认的XML。

好吧,好吧,我不明白你为什么遇到问题,但是我只是尝试了我提供的URL建议的内容,并从所有文本中获得了适当的打印每个&lt; p&gt;标签。

这是代码:

$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"

这是您在代码中正在做的事情吗?

最新更新