6

我决定使用 SimplePie 来解析 RSS 和 Atom Feed。

我想做的是让人们通过文本字段输入 RSS 和 Atom Feeds URL。

如果他们放了无效的 RSS 和 Atom 提要怎么办?

我知道无效的 Feed 不会通过 SimplePie 进行解析。

但我想知道是否可以通过 SimplePie 解析提要。

通过这个过程,我想删除那些无效的 RSS 提要 URL 列表。

检查文档类型、XML 或 HTML 将是找出有效性的第一步。

我怎样才能在 PHP 中做到这一点?还是有其他方法可以做我想做的事?

4

3 回答 3

7

要检查 Simplepie 是否能够解析提要,您只需加载有问题的提要并检查错误:

$feed = new SimplePie();
$feed->set_feed_url('http://example.com/rss');
$feed->init();
$feed->handle_content_type();

if ($feed->error())
{
    // this feed has errors
}

您可能希望禁用自动发现功能来测试特定的提要 URL。此外,您可以自行获取提要数据并set_raw_data使用set_feed_url.

于 2011-09-16T06:46:48.453 回答
0

这就是我所做的。

if(strpos(file_get_contents($feed_url),'<?xml')===false) {
    //remove this $feed_url from the Feed List
    return;
}

这解决了我所拥有的基本问题。

于 2011-09-16T06:04:50.260 回答
0

这里似乎是现成的功能: http ://www.sitepoint.com/forums/showthread.php?555763-Validating-an-RSS-Feed-with-PHP&p=3865285&viewfull=1#post3865285

所以你只要打电话

$rssvalid = validateFeed("http://yourUrlHere.com");
if($rssvalid == true){
print"Yes, it´s valid!";
} else {
print"Sorry, it´s not valid!";
}
于 2011-09-16T05:20:11.903 回答