我目前正致力于验证任何给定网址是否与正确格式化的播客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);
这似乎解决了所有假阴性的情况,并且副本似乎可以解决误报。
答案 0 :(得分:0)
使用' @'像这样的标志:
@$dom->validateOnParse = true;
因为并非总能找到经过验证的文件,所以' @'标志将忽略可能发生的任何警告。