我正在尝试获取几个 RSS 提要,并使用 PHP 将它们的内容放入 MySQL 数据库中。存储此内容后,我将显示在自己的页面上,并将内容合并到一个 RSS Feed 中。(可能过滤后)
我以前没有处理过 RSS 提要,所以我想知道这样做的最佳框架/方法是。我已经阅读了有关基于 DOM 的解析,但听说它需要大量内存,有什么建议吗?
Magpie是一个合理的 PHP RSS 解析器。便于使用:
require('rss_fetch.inc');
$rss = fetch_rss($url);
例如这样的一个项目:
<item rdf:about="http://protest.net/NorthEast/calendrome.cgi?span=event&ID=210257">
<title>Weekly Peace Vigil</title>
<link>http://protest.net/NorthEast/calendrome.cgi?span=event&ID=210257</link>
<description>Wear a white ribbon</description>
<dc:subject>Peace</dc:subject>
<ev:startdate>2002-06-01T11:00:00</ev:startdate>
<ev:location>Northampton, MA</ev:location>
<ev:enddate>2002-06-01T12:00:00</ev:enddate>
<ev:type>Protest</ev:type>
</item>
会变成这样的数组:
array(
title => 'Weekly Peace Vigil',
link => 'http://protest.net/NorthEast/calendrome.cgi?span=event&ID=210257',
description => 'Wear a white ribbon',
dc => array (
subject => 'Peace'
),
ev => array (
startdate => '2002-06-01T11:00:00',
enddate => '2002-06-01T12:00:00',
type => 'Protest',
location => 'Northampton, MA'
)
);
然后你就可以挑选出你想保存在数据库中的位,然后你就可以走了!
最好的 PHP 解析器是SimplePie,恕我直言。我已经使用它多年了。它非常擅长抓取和解析以下内容:RSS 0.90、RSS 0.91 (Netscape)、RSS 0.91 (Userland)、RSS 0.92、RSS 1.0、RSS 2.0、Atom 0.3、Atom 1.0;包括以下命名空间:Dublin Core 1.0、Dublin Core 1.1、GeoRSS、iTunes RSS 1.0(大部分完成)、Media RSS 1.1.1、RSS 1.0 Content Module、W3C WGS84 Basic Geo、XML 1.0、XHTML 1.0
SimplePie 1.2 甚至有数据库缓存,所以它应该有你需要做的一切。
如果您需要解析原始 XML 文件,请尝试使用 XMLize
-崔斯特
对于一个非常简单的脚本,它只是端到端工作(解析 RSS,插入数据库);