2009-01-22 44 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

相關問題