好的,所以,我正在为朋友的播客网站创建一个页面,列出他的播客的所有剧集.基本上,我正在寻找的是如何阅读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(' & ', ' & ', $feed[$x]['title']);
$link = $feed[$x]['link'];
$description = $feed[$x]['desc'];
$short = substr($description, 0, strpos( $description, '<'));
$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";