任何现有的RSS feed url验证器?

时间:2011-09-27 17:13:11

标签: php rss simplexml validation

在我开始编写验证程序以检查URL是否实际指向RSS源之前,我做了一些搜索可能存在的验证器,但没有任何可靠的验证器。

我只想问一下社区是否有人通过网址了解RSS验证器?

如果我自己写,你有什么建议?

我正在考虑只检查一行文本的第一个实例,并确保它定义<?xml version="1.0" encoding="UTF-8"?>,然后检查下一个项目是<rss>节点。

你有什么想法?可能有一种情况,饲料可能不符合上述语法吗?

另请注意,我尝试使用的一种方法如下:

$valid = true;

try{
    $content = file_get_contents($feed);
    if (!simplexml_load_string($content)){
        $valid = false;
    }
} catch (Exception $e){
    $valid = false;
}

不幸的是,我似乎无法抑制警告(error_reporting(0)无法正常工作..)所以只是警告我。


对于任何有兴趣的人,我使用了W3C Validator API

$url = "http://feed_url.com";
$validator = "http://validator.w3.org/feed/check.cgi";
$validator .= "?url=".$url;
$validator .= "&output=soap12";

$response = file_get_contents($validator);
$a = strpos($response, '<m:validity>', 0)+12; 
$b = strpos($response, '</m:validity>', $a); 
$result = substr($response, $a, $b-$a); 
echo $result;

这将相应地返回true或false。

2 个答案:

答案 0 :(得分:4)

W3C Feed Validation Service提供SOAP接口。来自About页面:

  

是否有针对此服务的公共API的Web服务?

     

是的,有一个SOAP接口,可以使用查询访问   参数output =“soap12”在常规查询之上。 SOAP 1.2 Web Service API documentation有更多详细信息。

答案 1 :(得分:1)

我会这样做:

  1. 这是有效的XML吗?如果是,请继续。

  2. 顶级元素是rss还是feed?如果是这样,那就是一个饲料。如果不是,那就不是。

  3. 除了1.0和所有版本的Atom之外,它涵盖了RSS的所有版本。

    RSS 1.0更难以实现,因为它的顶级元素是RDF,这是一种比RSS更通用的格式,所以你必须更深入地了解RSS-ness的指示。但幸运的是,目前没有太多的RSS 1.0,其中大部分是RSS 2.0或Atom 1.0。

    希望这有助于,通常的免责声明,我不是律师,等等。