ワイヤード・パンチ

PHPでアメブロのRSSから時刻を取得する方法。

仕事上で作っているWEBサイトにて、アメブロの投稿一覧を表示させないといけない場面がありました。PHPを使ってそれを実現しようと思い、アメブロのRSSを取得するコードを作ったのですが、RSSの内容を格納した配列を出力しても、なぜかその中には各投稿の日付のデータがありません。どうすれば取得できるのでしょうか。

広告

問題となったコード。

URLはもちろん架空のものです。

$rss = simplexml_load_file("http://feedblog.ameba.jp/rss/ameblo/hogehoge");
echo "<pre>";
echo "<code>";
print_r($rss);
echo "</code>";
echo "</pre>";

上記コードにて、RSSの内容を変数に格納し、画面上にその中身を出力させています。そして以下が、画面上に出力させた結果です。

SimpleXMLElement Object
(
	[channel] => SimpleXMLElement Object
		(
			[title] => hogehoge
			[link] =&gt; <a href="http://ameblo.jp/hogehoge/">http://ameblo.jp/hogehoge/</a>
			[description] =&gt; ほげほげ
			[items] =&gt; SimpleXMLElement Object
				(
				)
		)
	[item] =&gt; Array
		(
			[0] =&gt; SimpleXMLElement Object
				(
					[title] =&gt; ふがふが
					[link] =&gt; <a href="http://ameblo.jp/hogehoge/entry-111111.html">http://ameblo.jp/hogehoge/entry-111111.html</a>
					[description] =&gt; SimpleXMLElement Object
						(
						)
				)
			[1] =&gt; SimpleXMLElement Object
				(
					[title] =&gt; ぴよぴよ
					[link] =&gt; <a href="http://ameblo.jp/hogehoge/entry-222222.html">http://ameblo.jp/hogehoge/entry-222222.html</a>
					[description] =&gt; SimpleXMLElement Object
						(
						)
				)
			.
			.
			.
			以下、同様
		)
)

配列にはアメブロの最新何件かの投稿内容が入っており、それぞれの投稿にはタイトルとURLはあるのですが、肝心の日付が見当たりません。このままだと、いつ投稿された記事なのかわからなくなってしまいます。ぼくが他人のブログを読む際、真っ先に見つけるのは日付なので、日付がないのは非常に困ります。せっかく頑張って読んでも、古すぎて今では通用しない記事だった、ということがあり得るので。

解決法。

RSS1.0でdc:dateを取得する – Qiita

某掲示板にて質問してみたところ、さっそく上記のサイトを教えていただきました。そしてそれをもとに書きなおしたコードが以下です。

$rss = simplexml_load_file("http://feedblog.ameba.jp/rss/ameblo/hogehoge");
$output = "";
foreach($rss-&gt;item as $item) {
	$dc = $item-&gt;children("http://purl.org/dc/elements/1.1/");
	$date = $dc-&gt;date;
	$date = strtotime($date);
	echo date("Y年n月j日", $date);
}

各投稿記事をforeachで回して、それぞれの日付を画面上に出力させています。なぜ配列の中に無かった「children」というものを指定して、日付が取れるようになるのか、詳しいことはわかりませんが、とりあえずそういうものだと思っておきましょう。

今回はアメブロで試しましたが、他のRSSでも普通にやっては日付が取れないところがあるかもしれません。そのときにこれが使えるかどうかは未検証。

余談。

ブログといえばアメブロ、っていうくらいにアメブロは多く使われています。でもなんであんなに人気なのか、よくわからない。「アメブロ 人気 理由」などでgoogle検索してみても、なぜかアメブロのダメな点ばかり出てきてしまいます。正直言ってぼくもアメブロは好きではなく、そのブログとは一切関係ない余計が表示が多すぎて読みづらいのです。

ダメな点はさておき、ブログといえばアメブロしか知らないという人があまりにも多い気がします。アメブロの知名度が高すぎるその理由は、やはり芸能人ブログの存在でしょうか。そしてなぜ芸能人が多いのかと思えば、芸能人の募集を行っているからだと思われます。どこでも良いのでアメブロのブログの一番下を見ると、芸能人募集の告知が表示されていました。一般人のブログだったとしても。

ネットに詳しくない人にも、もっとアメブロ以外のブログの存在を知ってほしいところです。ぼくとしては、本ブログでも使っているように、やはりTumblrを勧めたい。ただ、ログイン画面からしてわかるように、あまりにもデザイナー寄りな雰囲気なため、ビジネスマンには向かないのかもしれません。商売というのは活気があってこそ、口や文字で語ってなんぼなので、アメブロみたいにいろいろとテキストが表示されているのが、賑やかだと感じてしまい、そちらを選んでしまうんでしょうかね。知名度うんぬんはさておき。

追記。(2017/12/26)

とっくに昔のことですが、現在このブログはすでにTumblrからwordpressに乗り換えています。

過去の記事を一気に編集するには、Tumblrはやりづらかった…。