2009-01-22 92 views
10

我正在尝试使用几个RSS源,并将它们的内容放入使用PHP的MySQL数据库中。在我存储这些内容后,我将显示在我自己的页面上,并将内容合并到一个RSS Feed中。 (可能经过滤后)什么是将RSS源送入MySQL数据库的最佳方式

我以前没有处理过RSS源,所以我想知道做这个的最好的框架/方法是。我已经阅读过基于DOM的解析,但是听说它需要大量内存,有什么建议吗?

回答

9

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' 
    ) 
); 

然后,你可以挑选出位的你想要保存在数据库中,然后离开你去!

+0

我试过喜鹊。我将它指向http://chacha102.com/feed/,当用源代码查看时显示整个帖子,但使用喜鹊只能让我看到第一句话。 – 2009-01-22 22:36:31

+0

看起来它有一些RSS 2.0饲料的问题:( – 2009-01-22 22:41:05

0

这里有几个RSS解析库,包括Magpieone in pear

我会选择一个解析器,然后通过循环运行它并将数据提供给数据库。确保你计算出你想要运行脚本的频率,并考虑它是从cron运行的,还是只是偶尔加载的页面的一部分。

7

最好的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;包括以下命名空间:都柏林核心1.0,都柏林核心1.1,GeoRSS,iTunes RSS 1.0(大部分完整),媒体RSS 1.1.1,RSS 1.0内容模块,W3C WGS84 Basic Geo,XML 1.0,XHTML 1.0

SimplePie 1.2甚至有数据库缓存,所以它应该有你需要的一切来做你想做的。

如果你需要解析原始的XML文件,请尝试使用成XML

-Trystian

相关问题