<< AWSとYWSのマッシュアップ例 | main | JavascriptとPHPの連携 >>

2007.02.24 Saturday

RSSフィードのキーワード検索

RSSフィードに指定したキーワードが含まれる場合は、
その記事を関連記事として表示する、
という機能を
検索ページ
に実装してみました。
実際には、実体のPHPへの実装です。

現時点だと、「卒業」、「サクラ」などをキーワードにすると、マッチします。
検索対象は、Yahooミュージックのミュージックマガジンです。

ここで使ったのが、PearのXML_RSSなのですが・・・
--

さて、Pearに含まれるXML_RSSを使うと、RSSフィードの解析が簡単に出来ます。
具体例は、XML_RSSの使用例にあるとおり、とてもシンプル。
ただ、タイトルだけではちょっと情報量が少ないので、descriptionを解析しようとすると、この「getItems」メソッドは使えません。
そこで、「getChannelInfo」を使ってみると、フィード数とのミスマッチが。
これは、使用するRSSフィードに、title,link,descriptionのセットが完全に含まれるものだけをカウントするようで、結局、「getStructure」を使って、自前で解析することに・・・
まあ、XMLベースの解析よりは格段に楽なので、いいんですけどね。

ソースは以下のとおり。
function 関数名($xml_source,$feed_title,$Keywords)
{
require 'XML/RSS.php';

$bFound = "False";

$rss =& new XML_RSS($xml_source);
$rss->parse();

foreach ($rss->getStructure() as $item) {
$title = $item['title'];
$description = $item['description'];
$link = $item['link'];
$out_html = "False";
if( false !== strpos( $title, $Keywords ) ) $out_html = "True";
else if( false !== strpos( $description, $Keywords ) ) $out_html = "True";
if( "False" != $out_html ) {
echo "<a target=\"_blank\" title=\"$description\" href=\"" . $link . "\">" . $title . "</a><br>\n";
$bFound = "True";
}
}
}


ループで文字列比較して、マッチしたらリンク作成、だけです。
XML_RSSは、このあたりの問題に注意して使えば、使いやすく出来ているので、これを使った自分だけのRSSリーダーも簡単に作れそう。
例えば、RSSフィードと、気になるキーワードを指定しておいて、
マッチするのがあったら、通知する、とか。
ま、実際に作ろうとすると、新着管理とかが面倒になるわけですが。

--

テクノラティお気に入りに追加する

Comments

コメント入力は停止しています

海外からと思われるコメントスパムが横行しているため、全記事のコメント入力を停止しています。メッセージのある方は、ホームページの一番下に連絡欄がありますので、そちらからお願いします。

Trackback URL

トラックバックする場合は、
トラックバック元の記事にこのエントリへのリンクを記載してください
このエントリのタイトル「RSSフィードのキーワード検索」
このエントリのリンク「http://kommy.s254.xrea.com/blog/log/eid16.html」