编程语言
首页 > 编程语言> > php – 如何检测页面是RSS还是ATOM提要

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之间差异的好方法的任何建议?

谢谢,

胡椒
http://feedingo.com

解决方法:

我会嗅到这些格式具有的各种唯一标识符:

原子: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