【问题标题】:How to get image from rss feed in php如何从 php 中的 rss 提要获取图像
【发布时间】: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-&gt;image-&gt;href; 没有获取图片网址。我不知道如何获取图片网址,请帮我获取图片网址。 ..提前谢谢

【问题讨论】:

  • $item-&gt;image 能得到什么?
  • 我不认为$item 包含和image 属性。先检查一下。
  • dula 和 tarangp 在提出疑问之前请检查我的 rss 提要...顺便说一下,item->image 是一个嵌套数组,它用于我的播客封面名称和描述,而不是剧集。说真的,我不知道从 d3t3ozftmdmh3i.cloudfront.net/production/…>.. 获取 iimage href

标签: php xml rss podcast


【解决方案1】:

您正在处理 XML / RSS 文档中的 namespaced 节点,因此您应该使用 namespace 来帮助识别感兴趣的节点。我从未使用过simpleXML,因此只能提供使用传统DOMDocumentDOMXPath 的替代解决方案

正如我所说,我从未使用过 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 表达式 - 其中一些使用 dcatom 命名空间,而另一些则没有。

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多