任何现有的RSS提要url验证器


Any existing RSS feed url validators?

在我开始编写验证器来检查URL是否真的指向RSS提要之前,我搜索了一些可能存在的验证器,但没有找到任何可靠的验证器。

我只是想问社区,如果你们知道一个RSS验证器的URL?

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

我正在考虑只是检查一行文本的第一个实例,并确保它定义<?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)不工作…),所以只是向我发送警告。


<

解决方案/strong>

对于任何感兴趣的人,我使用了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。

W3C提要验证服务提供了一个SOAP接口。从About页面:

是否有一个带有公共API的Web服务?

是的,有一个SOAP接口,可以通过使用查询访问在常规查询之上的参数output="soap12"。SOAP 1.2 Web服务API文档有更多详细信息。

我会这样做:

  1. 是有效的XML吗?

  2. 顶层元素是rss还是feed?如果是这样,它就是一个提要。

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

RSS 1.0比较困难,因为它的顶层元素是RDF,这是一种比RSS更通用的格式,所以您必须更深入地寻找RSS的指示。但幸运的是,目前并没有太多的RSS 1.0,大多数都是RSS 2.0或Atom 1.0。

希望这篇文章能帮到你,但我要声明,我不是律师,等等