忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/22 20:37 |
ZF-04:Zend_Feed

Zend_FeedはRSSの読み書きを行うクラスです。
MagpieRSSでRSSを読み込みましたが、MagpieRSS自体が微妙にバグあり状態で更新が止まってしまっているので、今から使用するのはお薦めできません。

Zend_Feedは扱いがやたら簡単なのでさっくりといじってみましょう。
Zend_Feed::importでRSSから読み込みを行い、Zend_Feed::importFileでローカルのXMLファイルから読み込みを行えます。
驚きなのがZend_Feed::findFeedsで、普通のHTMLファイルの<LINK>タグからRSSを探して読み込んでくれるという超便利メソッド。
サイトトップを指定しておけば、きちんとタグを設定してあるサイトならフィードのURLが変わったとしても一切修正の必要がありません。
とりあえず使用。

zend_feed1.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
    
    //Zend_Feed
        require_once('Zend/Feed.php');
    
    //Feedインスタンス
        $feed = Zend_Feed::import(
            'http://yuubiseiharukana.blog.shinobi.jp/RSS/200/');
        //$feed = Zend_Feed::findFeeds(
        //  'http://yuubiseiharukana.blog.shinobi.jp/');
    
    //各要素を取得可能
        print($feed->title);
        print($feed->language());
    
    //イテレータは各エントリに対応
        foreach($feed as $val){
            print($val->title());
        }
    
    //要素の変更
        $feed->title='タイトルを修正';
    
    //修正したRSSを出力
        $feed->send();

取得さえ成功してしまえば各要素には
$feed->title();
$feed->title;

とプロパティでもメソッドでも直接アクセスすることができます。

またフィードの改変を簡単に行うことができます。
$feed->title='タイトルを修正';
というふうに単に値を突っ込むだけで変更することが可能です。
ただ、何故か非対称なことに、メソッドを使って
$feed->title('タイトルを修正')
というふうには書けません。

他所のサイトのRSSフィードを取得して表示したいといった場合、とりあえずHTMLをさっさと表示して、RSSフィード部分をAJAXで自分のサーバにあるRSS取得スクリプトにリクエストを行い、PHPで適当にパースして返すといった方法で簡単にできます。
AJAXによるRSSフィード取得はクロスドメイン問題のせいで難しいので、一旦自サーバに投げてPHPからリクエストした方が楽です。

まあ、貼り付けるだけで簡単取得できるサービスがいっぱいあるんで、それをテンプレに貼り付けたほうがもっと手っ取り早いんですがね。
http://code.google.com/intl/ja/apis/ajaxfeeds/
http://www.moondakota.com/feed/index_s.php
http://zero-hl.ddo.jp/feed2js/build.php

 

PR


2009/10/09 22:23 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<買った本リスト 2009/10/09 | HOME | CakePHP-03:CakePHPで複数のテーブルを結合>>
忍者ブログ[PR]