ブログ紹介のページをPHPでリメイク

こんな2月になったやっと解ったのだが、派遣先の大学の活動を紹介するブログの更新状況を表示していたページが、Google Feed API を利用しており、12月から動いていなかった。なんとも間抜けな話です。

言い訳すれば、ブログに関しては私が管理しているサーバーで公開しているので、何か不具合があればすぐに対応できるのですが、この Google Feed API を使ったページは、外部の業者が管理していました。

しかも、その業者はあくまでサーバーの管理でコンテンツはノータッチ。今の担当者は公式サイトは更新するものの、別の業者が作ってそれっきりの紹介ページがどうなっていたか知りませんでした。

幸い、サーバー管理を担当している業者が親切に Google Feed API が廃止になったからだと教えてくれたので、この件が発覚しました。以前は、更新のあったブログが一目瞭然だったのですが、今は、ただのリンクページに置き換わっており、どのブログが更新されたか、全くわかりません。

ということで、更新のあったブログを紹介するページがあってもいいのでは、と思い、PHP で作り直すことにしました。

ところが、なかなかうまくいかない。
RSSで持ってくるXMLの情報に統一性がありません。
この時点で、やっと、RSS1.0 、RSS2.0、atom という3つの仕様があることがわかりました。
それぞれに合わせて解析する処理を書く必要があります。

また、以前使っていたページは、更新のあったブログの最初の画像を縮小表示して見やすくしていたので、PHP でこれを実現しようとしたのですが、やっぱりうまくいきません。XMLのブログ本文を解析して画像ファイルを特定する予定だったのですが、HTMLの書き方に統一がないため、うまく画像だけ切り出すのにいろいろ指向錯誤するはめに。

ネットに情報が多いし、以前使っていた JavaScript は簡単に記述で実現しているから1日もあればできるだろう、くらいの簡単な気持ちで始めました。しかし、3日経っても、まだゴールが見えません。HTMLから画像を切り出す処理で、まだまだワーニングが大量に出てきます。1つ1つ潰しているのですが、HTMLの書き方って、以外と自由度が高いので条件分岐が増える一方。改めてWebブラウザのHTML処理エンジンの優秀さを実感してます。

たぶん、画像の切り出しがなければ、そんな手間はかからなかったかもしれませんが、それだとインパクトに欠けるし。世の中のエンジニアはどうされているのでしょうね。丹念にネットで調べていくと、いろいろ解りました。みんさん、やはり困っているようです。調べた結果、やはり丁寧に作っていくしかないようです。

ネットでざっとしらべたところ、PHP の simplexml_load_file() で WorkPress の feed
を読み込めば簡単みたいによく書いてありますが、これはウソ。
日本の2バイト文字コードの都合で、これではXMLとして読めないことが多いようです。
WordPress を処理するなら、日本語の2バイト文字は避けられません。今回は文章は使わないので、ばっかりあきらめて、XMLの取り込みを優先しました。

最後は、ここを参考にさせてもらいまいした。

http://yznote.blog19.fc2.com/blog-entry-38.html
[PHP] PHP simplexml_load_string でパーサーエラー

http://q.hatena.ne.jp/1180743477
PHPで、RSS等のXMLを取得し、パースしています。

やっぱり日本語の2バイト文字を扱うのは難しいですね。

とはいえ、PHP で処理するのに約20秒もかかるので、このまま使う訳にいかず、今のところ
保留中。