使用php验证播客rss / xml feed

时间:2015-03-09 00:42:40

标签: php xml rss podcast

我目前正致力于验证任何给定网址是否与正确格式化的播客Feed相对应。

现在我有一个两阶段的方法,似乎是一个相当充分的捕获。第一种是使用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);

这似乎解决了所有假阴性的情况,并且副本似乎可以解决误报。

1 个答案:

答案 0 :(得分:0)

使用' @'像这样的标志:

@$dom->validateOnParse = true;

因为并非总能找到经过验证的文件,所以' @'标志将忽略可能发生的任何警告。