如何从 php 中的 rss 提要获取图像
Posted
技术标签:
【中文标题】如何从 php 中的 rss 提要获取图像【英文标题】:How to get image from rss feed in php 【发布时间】:2022-01-08 16:22:39 【问题描述】:My Rss
链接到我的剧集图片:
<?php
$url = "https://anchor.fm/s/75abc654/podcast/rss";
$invalidurl = false;
if(@simplexml_load_file($url))
$feeds = simplexml_load_file($url);
else
$invalidurl = true;
echo "<h2>Invalid RSS feed URL.</h2>";
$i=0;
if(!empty($feeds))
$site = $feeds->channel->title;
$sitelink = $feeds->channel->link;
foreach ($feeds->channel->item as $item)
$title = $item->title;
$link = $item->link;
$description = $item->description;
$mp3 = $item->enclosure['url'];
// $season= $item->itunes:season;
$image = $item->itunes->image->href;
$postDate = $item->pubDate;
$pubDate = date('D, d M Y',strtotime($postDate));
if($i>=5) break;
?>
在此代码中$image = $item->image->href;
没有获取图片网址。我不知道如何获取图片网址,请帮我获取图片网址。 ..提前谢谢
【问题讨论】:
$item->image
能得到什么?
我不认为$item
包含和image
属性。先检查一下。
dula 和 tarangp 在提出疑问之前请检查我的 rss 提要...顺便说一下,item->image 是一个嵌套数组,它用于我的播客封面名称和描述,而不是剧集。说真的,我不知道从 您正在处理 XML / RSS 文档中的 namespaced
节点,因此您应该使用 namespace
来帮助识别感兴趣的节点。我从未使用过simpleXML
,因此只能提供使用传统DOMDocument 和DOMXPath 的替代解决方案
正如我所说,我从未使用过 SimpleXML,但我注意到 XPath 支持它,因此您可以修改下面的代码
这里的诀窍是register
适当的命名空间,以便 XPath 表达式可以使用它。
$url='https://anchor.fm/s/75abc654/podcast/rss';
$dom=new DOMDocument;
$dom->load( $url );
$xp=new DOMXPath( $dom );
$xp->registerNamespace('itunes','http://www.itunes.com/dtds/podcast-1.0.dtd');
$img=$xp->query('//channel/itunes:image');
if( $img )echo $img->item(0)->getAttribute('href');
上面会简单的输出
https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/19641917/19641917-1637668693797-44b27f4c00a16.jpg
为了稍微扩展上述内容并注册 RSS 提要中使用的其他命名空间,然后在 DOM 中查询命名空间元素,也许以下内容将有助于阐明如何使用命名空间。 $tags
数组只是从源文件中随机选择的元素,这些元素将用于构造 XPath 表达式 - 其中一些使用 dc
或 atom
命名空间,而另一些则没有。
$url='https://anchor.fm/s/75abc654/podcast/rss';
$dom=new DOMDocument;
$dom->load( $url );
$xp=new DOMXPath( $dom );
$xp->registerNamespace('dc','http://purl.org/dc/elements/1.1/');
$xp->registerNamespace('itunes','http://www.itunes.com/dtds/podcast-1.0.dtd');
$xp->registerNamespace('atom','http://www.w3.org/2005/Atom');
$tags=array('title','description','author','link','atom:link','/item/title','/item/dc:creator','/item/pubDate','/item/itunes:summary');
foreach( $tags as $tag )
$expr=sprintf('//%s',$tag );
$col=$xp->query( $expr );
if( $col && $col->length > 0 )
foreach( $col as $node )printf('%s -> %s<br />',$tag,trim($node->nodeValue));
这将打印:
title -> Espada Podcast
title -> Espada Podcast
title -> Discussion about Doremon | ft:Ryuk,Ryomen
title -> Espada's Trailer
description -> Our Podcast Trailer
description ->
We discussed about doremon .. Support us on Instagram
description ->
Adula oonum illa keela potrunga
author -> Espada Podcast
link -> http://espadapodcsat.ml
link -> http://espadapodcsat.ml
link -> https://anchor.fm/espada-podcast8/episodes/Discussion-about-Doremon--ftRyuk-Ryomen-e1at2fu
link -> https://anchor.fm/espada-podcast8/episodes/Espadas-Trailer-e1asvh8
atom:link ->
atom:link ->
/item/title -> Discussion about Doremon | ft:Ryuk,Ryomen
/item/title -> Espada's Trailer
/item/dc:creator -> Espada Podcast
/item/dc:creator -> Espada Podcast
/item/pubDate -> Sat, 27 Nov 2021 13:29:47 GMT
/item/pubDate -> Sat, 27 Nov 2021 10:56:21 GMT
/item/itunes:summary ->
We discussed about doremon .. Support us on Instagram
/item/itunes:summary ->
Adula oonum illa keela potrunga
【讨论】:
以上是关于如何从 php 中的 rss 提要获取图像的主要内容,如果未能解决你的问题,请参考以下文章