标签:atom-feed php rss feedparser
我目前正在用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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。