前回の記事で Atom 1.0 を作成するためのライブラリを作ったので、同じようにして RSS 2.0(Really Simple Syndication) フォーマットでの XML フィードを生成するライブラリを作ってみました。RSS 2.0 の主要な機能はカバーしていますが一部の機能は実装されていないので必要に応じて追加して下さい。
Download: rss2-1.0.1.zip
ライセンス上の制限はありませんが無保証ですのでご利用の際は自己責任で使用して下さい。(CC0)
・使用例
<?php include_once 'Rss2/RssFeed.php'; include_once 'Rss2/RssItem.php'; $rss = new RssFeed(); $rss->title('サイトタイトル'); $rss->description('サイトの説明文です'); $rss->link('http://example.com/'); $rss->atomLink('http://example.com/rss.xml'); $item = new RssItem(); $item->title('記事1'); $item->description('ここに要約が入ります'); $item->link('http://example.com/1'); $item->guid('http://example.com/1'); $item->pubDate('2015-01-02 12:23:34'); $rss->addItem($item); header('Content-type:application/rss+xml'); echo $rss->saveXML();
・出力結果
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>サイトタイトル</title> <description><![CDATA[サイトの説明文です]]></description> <link>http://example.com/</link> <atom:link href="http://example.com/rss.xml" rel="self" type="application/rss+xml"/> <item> <title>記事1</title> <description><![CDATA[ここに要約が入ります]]></description> <link>http://example.com/1</link> <guid isPermaLink="true">http://example.com/1</guid> <pubDate>Fri, 02 Jan 2015 12:23:34 +0900</pubDate> </item> </channel> </rss>
・RssFeed 主要メソッド
<channel>の内容に関する関数です。
必須項目は title, link, description です。
__construct(属性の配列) save(保存先) saveXML() addItem(RssItemオブジェクト) title(タイトル) description(要約) link(サイトURL) atomLink(フィードURL) pubDate(発行日時) lastBuildDate(コンテンツ最終変更日時) language(言語) webMaster(メールアドレス) managingEditor(メールアドレス) copyright(著作権) ttl(有効期限の「分」) addCustomElement(要素名, 値, 属性の配列, CDATAの有無)
・RssItem 主要メソッド
<item>の内容に関する関数です。記事の分だけ作成します。
最低でも title か description のどちらかが必要です。
title(タイトル) link(記事URL) guid(一意な文字列, isPermaLink属性) description(要約) enclosure(添付ファイルのURL, ファイルサイズ, コンテンツタイプ) comments(コメントページURL) category(カテゴリー名) author(作成者のメールアドレス) dcCreator(作成者の名前) addCustomElement(要素名, 値, 属性の配列, CDATAの有無)
作成したフィードを HTML ファイルからリンクするには <head> に次のタグを挿入します。
<link rel="alternate" type="application/rss+xml" title="タイトル" href="ファイルの場所" />
Similar Posts:
- [PHP]Atom 1.0形式のフィードを作成するライブラリ
- [PHP]PubSubHubbub(PuSH)を使ってサイトの更新を瞬時に通知
- [PHP]DOM, XPathを使ったスクレイピング(HTMLのタグ内容取得)
- [HTML, CSS]CSSのクラスやIDの命名規則とよく使われる名前
- PHP で XML の内容を取得する(DOM, XPath)
- [PHP]料金表のようなものをテキストだけで表現する
- MacでのPHP開発におすすめのテキストエディタ比較
- [PHP, JS]jQuery UI autocompleteを使った自動補完(候補予測)
初めまして。PHPでWEBサイトを運営している遠藤と申します。
このたび、自サイトにおいてRSSを取り入れようと調べていたところ、「PHP ARCHIVE」様のこちらの記事にたどり着きました。
大変分かりやすい内容と、ライブラリまで作成されたとのことで、早速利用させて頂こうとDLしてテストを行ったところです。
その際に、1点だけ問題が発生しましたので、お知恵を頂けないかと書き込みさせて頂いております。
問題というのは、リンク先のURLに、「&」が入っていると、「& a m p;」(半角スペースはありません)と変換されXMLが出力されるようなのです。
以下その際のエラーメッセージの例です。
Warning: RssFeed::addItem(): unterminated entity reference index.php?code=333&ext=009 in C:\***\***\rss\RssFeed.php on line 49
なお、PHPのバージョン等は以下のとおりです。
PHP Version 5.6.12
XAMPP Version 3.2.1
windows 7 64bit
お忙しいところ恐れ入りますが、よろしければご回答の程よろしくお願いいたします。
ご報告ありがとうございます。
「&」を含むリンクをライブラリ側でエスケープするように変更しました。
エスケープ済みのURLを渡す際は一旦デコードしてから渡す必要があるのでご注意下さい。
管理人様、ご連絡と早速のご対応ありがとうございます。
返信が遅くなりまして申し訳ありませんでした。
ver1.0.1版で再度試してみようと思います。
まずは御礼かたがたご挨拶まで。