人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

*PHP5でRSSのバージョンを判定するスクリプト*


ブログが吐き出すFEEDを取得してDBに格納するスクリプトを書いてます。


$xmlstr = file_get_contents($feed);
$xml = simplexml_load_string($xmlstr, "SimpleXMLIterator" );
これで解析してます。


シンプルにRSSのバージョンを判定するスクリプトはどう書けばいいでしょうか?

みなさんよろしくお願いします。

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:dB RSS XML シンプル スクリプト
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● wizemperor
●60ポイント
$ns = $xml->getDocNamespaces();

if (in_array('http://www.w3.org/2005/Atom', $ns)) {
 // Atom 1.0
} else if (in_array('http://purl.org/rss/1.0/', $ns)) {
 // RSS 1.0
} else {
 // RSS 2.0(?)
}

getDocNamespacesメソッドを使うと、$nsにドキュメントの名前空間(ルート要素のxmlns属性の値)が代入されるので、それをチェックしてみてはいかがでしょう?

シンプルですが、もっとよい方法があるかもしれませんが…。

RSS 2.0(0.92系)は名前空間が明示されてないので、細かくチェックしたい場合には、ルート要素のversion属性の値(<rss version="x.xx">)をチェックする必要があると思います。

実際には、仕様に準拠していないフィードも多数ありますし、AtomなのかRSS 1.0(0.91系)なのかRSS 2.0(0.92系)なのかの3種類前後のチェックだけで足りるようには思います。

他に思いつくのは、(仕様上の)必須要素の有無を調べてチェックするとかでしょうか。

http://jp2.php.net/manual/ja/function.simplexml-element-getDocNa...

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ