私はいくつかのRSSフィードを取得し、それらのコンテンツをPHPを使用してMySQLデータベースに入れようとしています。このコンテンツを保存した後、自分のページに表示し、コンテンツを1つのRSSフィードに結合します。(おそらくフィルタリング後)
私はこれまで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'
)
);
次に、DBに保存したいビットを選択するだけで、すぐに使用できます。
そこにある最高の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 を解析し、DB に挿入する) だけの非常に単純なハッキングされたスクリプトの場合。