RSS フィードから必要の無い記事を様々な条件でフィルタリングして再配信させるコード

RSS フィードから様々な条件で記事を除外して自分が必要とするものだけを受信するコードです。私が個人で使うために簡単に作ったものなので、その都度更新していきますが、正しく動作するかなどはあまり検証していません。あくまでサンプルとしてお使いください。

サンプルでは iPhone という単語がタイトルに含まれる記事を除外しています。やり方によっては特定のドメインの記事を除外したりできますので、例えばはてなブックマークの総合ホットエントリから 2ch のまとめサイトのみを除外して購読するといった様な事が可能です。

コード

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
26
27
28
29
30
31
<?php
$feedUrl = 'http://example.com/feed';
$feedTitle = 'Sample feed';
$feedDescription = 'This is a sample feed.';
$rss = simplexml_load_file($feedUrl);
$rss = get_object_vars($rss);
foreach($rss['item'] as $key => $item) {
    if(preg_match('/iPhone/', $item->title)) unset($rss['item'][$key]);
}
?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
    <title><?php echo $feedTitle; ?></title>
    <link><?php echo $feedUrl; ?></link>
    <description><?php echo $feedDescription; ?></description>
    <language>ja</language>
    <pubDate><?php echo date(DATE_RFC822); ?></pubDate>
    <lastBuildDate><?php echo date(DATE_RFC822); ?></lastBuildDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <?php foreach($rss['item'] as $item): ?>
    <item>
        <title><?php echo $item->title; ?></title>
        <link><?php echo $item->link; ?></link>
        <description><?php echo $item->description; ?></description>
        <content:encoded><![CDATA[<?php echo $item->description; ?>]]></content:encoded>
        <pubDate><?php echo date('D, d M Y H:i:s O'); ?></pubDate>
    </item>
    <?php endforeach; ?>
</channel>
</rss>

このコードをファイルに保存して rss.php などタイトルを付けてサーバーにアップロードしてブラウザからアクセスすればフィルタリングされた RSS を出力します。

コメント

コメントは受け付けていません。