繁体   English   中英

如何从 php 中的 rss 提要获取图像

[英]How to get image from rss feed in php

我的

链接到我的剧集图片:<itunes:image href="https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/19641917/19641917-1637668693797-44b27f4c00a16.jpg"/>

<?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; 没有得到图像 url.. 我不知道如何得到图像 url,请帮我得到图像 URL。 .. 提前致谢

您正在处理 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');

以上将简单 output

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM