【问题标题】:Validate podcast rss/xml feed with php [duplicate]使用 php 验证播客 rss/xml 提要 [重复]
【发布时间】:2015-05-10 02:47:49
【问题描述】:

我目前正在努力验证任何给定的网址是否对应于格式正确的播客提要。

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

这似乎解决了所有假阴性的情况,而副本似乎解决了假阳性。

【问题讨论】:

  • 如果建议的副本对您没有帮助,请留下通知。还请提供两到三个示例播客:例如,一个非播客、一个无效但有效,一个有效。

标签: php xml rss podcast


【解决方案1】:

像这样使用“@”符号:

@$dom->validateOnParse = true;

因为并非总是会找到经过验证的文档,所以“@”符号会忽略可能出现的任何警告。

【讨论】:

  • $dom->validateOnParse = true; 永远不会发出警告(如果 $dom 已正确初始化),因此将错误控制运算符放在它前面充其量是误导。
  • 是的,你是对的,对不起我的坏^^
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多