关于php:如何发现给定URL的RSS feed

关于php:如何发现给定URL的RSS feed

How To Discover RSS Feeds for a given URL

我从用户那里得到一个URL。 我要知道:
a)URL是否是有效的RSS提要?
b)如果没有有效的提要与该URL相关联

使用PHP / Javascript或类似的东西

(例如,http://techcrunch.com失败a),但是b)会返回其RSS feed)

编辑:请参阅下面的答案


找到了我想要的东西:

Google的AJAX Feed API具有加载供稿和查找供稿功能(此处为文档)。

a)加载供稿以JSON提供供稿(和供稿状态)

b)查找提要提供给定URL的RSS提要

还有一个查找提要功能,可根据关键字搜索RSS提要。

计划与JQuery的$ .getJSON一起使用


Zend框架的Zend Feed类可以自动解析网页并列出可用的feed。

例:

1
$feedArray = Zend_Feed::findFeeds('http://www.example.com/news.html');

该链接将允许您使用W3C规范根据RSS / Atom规范来验证该链接,但确实需要您手动输入URL。

有多种方法可以通过编程方式完成此操作,具体取决于您选择的语言-在PHP中,将文件解析为有效XML是一个很好的开始,然后将其与相关DTD进行比较。

对于b),如果链接本身不是供稿,则可以对其进行解析并在页面的部分中查找指定的供稿,搜索类型为" application / rss + xml"的链接,例如:

1
2
<link rel="alternate" title="RSS Feed"
    href="http://www.example.com/rss-feed.xml" type="application/rss+xml" />

这种链接是大多数浏览器用来"自动发现"提要的链接(导致RSS图标显示在地址栏中)


a)检索并尝试对其进行解析。如果您可以解析它,那是有效的。

b)测试它是否是HTML文档(服务器发送text/html)MIME类型。如果是这样,请通过HTML解析器运行它,并查找具有RSS feed关系的元素。


对于Perl,有Feed :: Find,它可以自动从网页中发现联合供稿。用法非常简单:

1
2
use Feed::Find;
my @feeds = Feed::Find->find('http://example.com/');

它首先尝试使用link标记,然后在a标记中扫描名为.rss的文件以及类似的文件。


您是使用特定的语言来执行此操作,还是只需要有关RSS规范的详细信息?

通常,寻找XML序言:

1
<?xml version="1.0" encoding="UTF-8"?>

后面跟一个元素,但是您可能希望将其验证为XML,针对DTD对其进行完全验证,或者验证-例如,所引用的每个URL均有效,等等。更多详细信息会有所帮助。

更新:啊-PHP。我发现此库非常有用:MagpieRSS


推荐阅读

    linux命令中添加用户?

    linux命令中添加用户?,系统,密码,软件,用户,命令,信息,目录,用户名,账号,文

    linux命令更改用户?

    linux命令更改用户?,系统,密码,管理,用户,命令,环境,工作,地址,电脑,文件,lin

    linux命令给用户授权?

    linux命令给用户授权?,系统,数字,管理,权限,命令,密码,工具,时间,软件,信息,l

    linux命令创建用户组?

    linux命令创建用户组?,系统,代码,密码,用户组,用户,命令,信息,名称,新增,管

    linux命令给用户授权?

    linux命令给用户授权?,系统,数字,管理,权限,命令,密码,工具,时间,软件,信息,l

    linux命令创建用户组?

    linux命令创建用户组?,系统,代码,密码,用户组,用户,命令,信息,名称,新增,管

    查看linux用户命令行?

    查看linux用户命令行?,信息,系统,时间,名称,密码,用户,命令,地址,状态,设备,L

    linux所有用户命令行?

    linux所有用户命令行?,系统,信息,地址,工作,密码,命令,用户,时间,电脑,管理,L

    linux用户下的命令是?

    linux用户下的命令是?,系统,工作,管理,地址,命令,密码,基础,信息,目录,新增,L

    linux用户登录的命令?

    linux用户登录的命令?,系统,信息,工作,地址,时间,密码,名称,命令,电脑,软件,l

    linux关机用户命令?

    linux关机用户命令?,系统,工作,信息,状态,管理,命令,基础,目录,用户,功能,lin

    linux看用户信息命令?

    linux看用户信息命令?,系统,密码,信息,状态,软件,情况,命令,用户,网络,时间,l

    linux下删除用户命令?

    linux下删除用户命令?,系统,代码,邮箱,用户组,命令,用户,名称,管理,电脑,账

    用户id的linux命令?

    用户id的linux命令?,系统,密码,信息,联系方式,地址,位置,用户,命令,用户名,

    linux删除用户组命令?

    linux删除用户组命令?,管理,系统,密码,电脑,名称,用户,用户组,名字,信息,工

    linux发现新网卡命令?

    linux发现新网卡命令?,系统,信息,网络,电脑,工具,服务,状态,命令,网卡,名称,

    linux下用户权限命令?

    linux下用户权限命令?,管理,系统,密码,地址,权限,时间,基础,信息,基本知识,

    linux命令发现不了?

    linux命令发现不了?,软件,系统,发行,工具,名称,不了,命令,地方,代理,信息,lin

    linux登陆用户命令?

    linux登陆用户命令?,系统,工具,信息,地址,软件,工作,命令,数字,服务,名称,Lin

    linux用户名改名命令?

    linux用户名改名命令?,系统,密码,命令,代码,名称,用户名,用户,终端,主机名,