php – 如何检测页面是RSS还是ATOM提要
作者:互联网
我目前正在用PHP构建一个新的在线Feed阅读器.我正在研究的功能之一是Feed自动发现.如果用户输入网站URL,脚本将检测到它不是Feed,并通过解析HTML以获取正确的标记来查找实际的Feed URL.
问题是,我目前正在检测URL是Feed还是网站的方式只能部分工作,我知道它不是最好的解决方案.现在我正在接受CURL响应并通过simplexml_load_string运行它,如果它无法解析它我将其视为一个网站.这是代码.
$xml = @simplexml_load_string( $site_found['content'] );
if( !$xml ) // this is a website, not a feed
{
// handle website
}
else
{
// parse feed
}
显然,这并不理想.此外,当它运行到可以解析的HTML网站时,它会认为它是一个提要.
有关检测PHP中的feed或non-feed之间差异的好方法的任何建议?
谢谢,
解决方法:
我会嗅到这些格式具有的各种唯一标识符:
原子:Source
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
RSS 0.90:Source
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://my.netscape.com/rdf/simple/0.9/">
Netscape RSS 0.91
<rss version="0.91">
等等(有关完整概述,请参阅第二个源链接).
据我所知,通过查找< feed>来分离Atom和RSS应该非常简单.和< rss>标签,分别.另外,您无法在有效的HTML文档中找到它们.
您可以通过查找< html>进行初步检查以告知HTML并将其分开.和< body>元素第一.为了避免输入无效的问题,这可能是使用正则表达式(通过解析器)最终证明合理的情况for once
标签:atom-feed,php,rss,feedparser 来源: https://codeday.me/bug/20191009/1876403.html