使用 PHP 将 Last.fm feed 解析到网站上

发布于 2024-07-27 02:22:53 字数 1268 浏览 2 评论 0原文

我正在尝试解析在我的网站上播放的最后 10 首曲目的 Last.fm 提要。

这就是我到目前为止所拥有的,


<?php

    $doc = new DOMDocument();
    $doc->load('http://ws.audioscrobbler.com/1.0/user/nathanjmassey/recenttracks.xml');
    $arrFeeds = array();
    foreach ($doc->getElementsByTagName('track') as $node) {
        $itemRSS = array ( 
            'artist' => $node->getElementsByTagName('artist')->item(0)->nodeValue,
            'name' => $node->getElementsByTagName('name')->item(0)->nodeValue,
            'url' => $node->getElementsByTagName('url')->item(0)->nodeValue,
            );
        array_push($arrFeeds, $itemRSS);
    }

?>

<?php 

foreach ($arrFeeds as $i => $values) {

    foreach ($values as $key => $value) {
        print "<p>$value\n</p>";  
    }

}

?>

这基本上以格式提供了 feed 中的所有 10 首曲目,

林肯公园

中间

http://www.last.fm/music/Linkin +公园/_/在+之间

但我需要格式化链接列表中的结果,例如,

<a href="$url">$artist - $track</a>

如何扩展我的脚本来实现此目的?

I'm trying to parse the Last.fm feed of my last 10 tracks played onto my website.

This is what I have so far,


<?php

    $doc = new DOMDocument();
    $doc->load('http://ws.audioscrobbler.com/1.0/user/nathanjmassey/recenttracks.xml');
    $arrFeeds = array();
    foreach ($doc->getElementsByTagName('track') as $node) {
        $itemRSS = array ( 
            'artist' => $node->getElementsByTagName('artist')->item(0)->nodeValue,
            'name' => $node->getElementsByTagName('name')->item(0)->nodeValue,
            'url' => $node->getElementsByTagName('url')->item(0)->nodeValue,
            );
        array_push($arrFeeds, $itemRSS);
    }

?>

<?php 

foreach ($arrFeeds as $i => $values) {

    foreach ($values as $key => $value) {
        print "<p>$value\n</p>";  
    }

}

?>

This basically gives me all 10 tracks in the feed in the format,

Linkin Park

In Between

http://www.last.fm/music/Linkin+Park/_/In+Between

But I need to format the results in list of links such as,

<a href="$url">$artist - $track</a>

How would I extend my script to achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北恋 2024-08-03 02:22:53

对于您的输出,请使用以下内容:

<?
foreach ($arrFeeds as $i => $values)
{
    print "<a href='" . $values['url'] . "'>" . $values['artist'] . " - " . $values['name'] . "</a>";
}
?>

更新:如何限制已解析项目的数量

(通过编辑响应评论,以便我可以使用代码显示标签。)

我目前正在工作,但我会尝试更改您的初始解析代码,如下所示:

array_push($arrFeeds, $itemRSS); // existing line
if (count($arrFeeds) >= 5) { break; } // add this line

For your output, use this:

<?
foreach ($arrFeeds as $i => $values)
{
    print "<a href='" . $values['url'] . "'>" . $values['artist'] . " - " . $values['name'] . "</a>";
}
?>

UPDATE: How to limit # of parsed items

(Responding to the comment via edit so I can use the code display tags.)

I'm at work at the moment, but I'd try changing your initial parsing code something like so:

array_push($arrFeeds, $itemRSS); // existing line
if (count($arrFeeds) >= 5) { break; } // add this line
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文