PHP阅读XML播客RSS Feed

好的,所以,我正在为朋友的播客网站创建一个页面,列出他的播客的所有剧集.基本上,我正在寻找的是如何阅读RSS Feed.解析节点,并在屏幕上显示信息. (最终,我将创建一个能够播放剧集的播放器,但那要晚得多)

这就是我正在阅读RSS Feed(这是我的一个节目 – 用于测试目的).

点击查看My Feed

<?php

    //Errors:
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);

    $rss = new DOMDocument();
    $rss->load('http://tbpc.podbean.com/feed/');
    $feed = array();
    foreach ($rss->getElementsByTagName('item') as $node) {
        $item = array ( 
            'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
            'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
            'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
            'guid' => $node->getElementsByTagName('guid')->item(0)->nodeValue,
            'enclosure' => $node->getElementsByTagName('enclosure')->item(0)->nodeValue,
            );
        array_push($feed, $item);
    }
    $limit = 1;
    for($x=0;$x<$limit;$x++) {
        $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
        $link = $feed[$x]['link'];
        $description = $feed[$x]['desc'];
        $short =  substr($description, 0, strpos( $description, '&lt;'));
        $file = $feed[$x]['guid'];
        echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong></p>';
        echo '<p>'.$description.'</p>';
        echo '<p>'.$short.'</p>';
        echo '<p>'.$file.'</p>';
    }
?>

问题是 – 我不知道如何从机箱节点的属性URL中获取信息,这样我就可以在页面上显示其余的信息(当我制作播放器时这会派上用场 – 最终).

所以!如何从机箱节点获取url属性?我错了吗?

任何有用的提示将不胜感激.谢谢.

解决方法:

节点有一个getAttribute()方法.所以你可以使用:

$node->getElementsByTagName('enclosure')->item(0)->getAttribute('url')

但是,从XML DOM中获取节点和值是另一种更舒适的方法:使用Xpath.看到这个答案:https://*.com/a/20225186/2265374

如果没有找到任何元素,则$node-> getElementsByTagName(‘enclosure’) – > item(0)将导致错误(对于SimpleXML btw也是如此).如果节点列表在Xpath中强制转换为字符串,则结果只是一个空字符串,并且不会触发错误.

您也可以通过这种方式直接获取属性.与enclosure元素的url属性一样:

echo 'Enclosure Url: ', $xpath->evaluate('string(enclosure/@url)', $rssItem), "\n";
上一篇:LED室内定位算法:RSS,TOA,AOA,TDOA(转载)


下一篇:php – 任何现有的RSS feed url验证器?