我目前正在研究一种方法来验证任何给定的url是否对应于格式正确的播客提要。
现在,我有一个两阶段的方法,它似乎是一个相当充分的捕获。首先是使用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);这似乎解决了所有假阴性的情况,而副本似乎修复了假阳性。
发布于 2015-03-09 08:58:56
像这样使用'@‘符号:
@$dom->validateOnParse = true;因为您并不总是能找到经过验证的文档,所以“@”符号将忽略任何可能出现的警告。
https://stackoverflow.com/questions/28933659
复制相似问题