simplexml_load_file()でRSSを読む時のコツ
PHPでRSS(XML)を読み込むときにはsimplexml_load_file()を使います。ブログや天気予報などのXMLベースのファイルを加工する時に便利です。
業務で複数のブログを読み込み時間別にソートをかけるという設定を行ったのですが少し複雑でしたのでメモ代わりに記しておきます。
通常simplexml_load_file()でブログのRSSファイルを読み込むとそのブログ自体のタイトル、リンク、省略された記事と記事自体のタイトル、リンク、省略された記事のデータしか取得できません。
今回の場合時間別にソートと画像も含めた本文が必要でしたので以下のようにして取得しました。
時間:
$xml->item->children("http://purl.org/dc/elements/1.1/")->date;
本文:
$xml->item->children("http://purl.org/rss/1.0/modules/content/")->encoded;
※$xmlには対象のブログのRSSのアドレスが入ります。
普通にRSSのページのソースを表示すると時間に関する「dc:date」や本文に関する「content:encoded」などは表示されるのですがsimplexml_load_file()では取得できないようです。「:」を含む物がだめみたいです。
こちらのページに取得のヒントが多数掲載されています。
参考サイト
RSS -- サイト情報の要約と公開
Webに悩まされる日々のログ「helog」
