SimpleXML関数使ってフィード読み込みたい
PHP5にはxmlを扱うのに適したSimpleXML関数っつーのがあるっていうのは前々から知ってて興味津々だった。ということでさっそく使ってみる。
何かを参考にしたいと、ググったらこちらのページへたどり着いた。
PHP5を試してみる - SimpleXML関数でRSSしてみる - Do You PHP?
よし。書いてある意味は理解した。なんか・・・これってツリー構造の考え方ができればいけそうな気がした。そちらのソースをお手本にして自分ちのフィード読み込んでみる。
とりあえずまず自分ちのフィードのソースを確認。かなりはしょってる(はしょってるって標準語じゃなかったらごめんなさい)けど、だいたい使えそうなのはこんな感じ。
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
<title>サイトタイトル</title>
<link>トップページのURL</link>
<description>descriptionの内容</description>
<item>
<title>ページのタイトル</title>
<description>コンテンツ内容</description>
<link>URL</link>
<guid isPermaLink="false">URL</guid>
<category domain="http://www.sixapart.com/ns/types#category">カテゴリ</category>
<pubDate>日付</pubDate>
<feedburner:origLink>URL</feedburner:origLink>
</item>
</channel>
</rss>
サイトタイトルにトップページURLのリンクつける。descriptionの内容もいれとく。その下にhrで区切り線入れて、後はULリストで各ページのリンク付きタイトルを並べるという形にする。(コンテンツ内容入れるとめっちゃ長くなったので$item->descriptionは却下した)
<?php
function convert($str) {
return mb_convert_encoding($str, mb_internal_encoding(), "auto");
}
$rss = simplexml_load_file('http://feeds.feedburner.jp/RedlineMagazine/');
echo "<h1><a href=\"" . convert($rss->channel->link) . "\">" . convert($rss->channel->title) . "</a></h1>\n";
echo "<p>" . convert($rss->channel->description) . "</p>\n";
echo "<hr />\n";
echo "<ul>\n";
foreach ($rss->channel->item as $item) {
echo "<li><a href=\"" . convert($item->link) . "\">" . convert($item->title) . "</a></li>\n";
}
echo "</ul>";
?>
よし。でけた。なんか思いのほか簡単というか、エラーも出ずにあっさりできたので逆にびっくりした。こんな素人でもできるんやーって感動。すごいね。っていうか、上で紹介したサイトの解説が素晴らしかったんだな。
ただこのサーバーまだPHP4なのでサンプルページとかアップはしない。
マニュアルリンク
<< 「お知らせ」が「更新情報」に派生した(2) | だから変数に入れてからループ回せって話 >>
トラックバック
このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/223