RSSは大きく分けると、RSS1.0(RDF),RSS2.0,Atomの三種類存在します。
有名なところでいうと
- RSS1.0: ライブドアブログ
- RSS2.0: アメブロ
- Atom: Googleのブログ
です。
RSSのパーサーを作る場合、RSSの種類ごとに違いを意識しながら作らなければならず、非常に面倒だったので、RSSの違いを意識せず使えるパーサーをPHPで作りました。
取得する項目は必要最低限におさえました。画像はよく使ったりするので、取得項目に画像を加えたのがポイントです。
インストール方法
packagistに登録したので、composerで簡単にインストールできます。
composer.json
{
"require": {
"yuzuru-s/parse-rss": "1.0.*"
}
}
composer install
これでインストール完了です。
使い方
以下がサンプルプログラムになります。
<?php
require __DIR__ . '/../vendor/autoload.php';
use YuzuruS\Rss\Feed;
$url = 'http://blog.livedoor.jp/dqnplus/index.rdf';
$ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36';
$res = Feed::load($url, $ua);
echo 'Title:' . $res['channel']['title'] . "\n";
echo 'Link:' . $res['channel']['link'] . "\n";
foreach ($res['item'] as $r) {
echo "\t" . 'Article Title:' . $r['title'] . "\n";
echo "\t" . 'Article Description:' . $r['description'] . "\n";
echo "\t" . 'Article Date:' . $r['date'] . "\n";
echo "\t" . 'Article og:img:' . $r['image']['ogimg'] . "\n";
foreach ($r['image']['img'] as $i) {
echo "\t\t" . 'Desc:img:' . $i . "\n";
}
}
取得できる項目は以下の通りです。
- サイト名
- サイトURL
- 記事タイトル
- 記事description
- 記事投稿日
- 記事中の画像(og:imgとdescriptionに含まれる画像(複数))
認証が必要なURLから取得する場合は下記のように指定します。
$res = Feed::load($url, $ua, $username, $password);
キャッシュを有効にする場合は下記のように指定します。
Feed::$cacheDir = __DIR__ . '/tmp';
Feed::$cacheExpire = '5 hours';