使用 php 验证播客 rss/xml 提要


Validate podcast rss/xml feed with php

我目前正在研究一种方法来验证任何给定的网址是否对应于格式正确的播客提要。

现在我有一个两阶段的方法,这似乎是一个相当足够的最能抓紧要。第一个只是使用 CURL 来检查响应,但随后我使用 DOMDocument 的 validateOnParse 来检查格式,即。

$dom = new DOMDocument();
$dom->validateOnParse = true;
if($dom->load($url, LIBXML_NOERROR)){

这似乎有点过于敏感,偶尔会拒绝结构不佳的播客提要。它还传递常规的非播客 rss 提要。

注意:我确信结构不佳的播客提要仍然可以接受,因为我已经通过播客应用程序订阅了它们来测试它们。

显然,validateOnParse并不是专门为检查播客而设计的,但是有没有另一种方法或库呢?播客制作者似乎很少符合任何类型的标准。

--更新--

任何搜索并查看过这个问题的人都很可能会发现重复是一个合适的解决方案。但是,就我而言,事实证明,我收到的不是格式不佳,而是因为我的服务器作为用户代理提供的任何内容阻止了一些$url请求。

简单来说,解决方案是伪造用户代理,如下所示:

$options  = array('http' => array('user_agent' => 'some user agent string'));
$context  = stream_context_create($options);
$file = file_get_contents($url,false,$context);

这似乎解决了所有假阴性的情况,而重复似乎可以解决假阳性问题。

像这样使用"@"符号:

@$dom->validateOnParse = true;

由于并非总是会找到经过验证的文档,因此"@"符号将忽略可能发生的任何警告。