XREAレンタルサーバを使う機会があったんですが、そこではPHPのバージョンが4.4.8でした。
このサーバでAPIから取得したTwitterのタイムラインを表示させたかったのですが、PHP4ではXMLのパースにsimplexmlは使えないですし、JSONでもdecode_jsonが使えません。
というわけで別の方法を試してみたんですが、XMLとJSONの両方を試してみて、結局JSONを使うことにしました。XMLを採用しなかった原因は文字化けです。XMLをパースするライブラリがうまく日本語をパースしてくれなかったので、JSONを採用することにしました。
今回はXMLもJSONも一番簡単そうな方法を使ったので、XMLのパースも別の方法ならうまくいくかもしれません。
今回はうまく行かなかったXMLのパース方法とJSONのパース方法と合わせて紹介します。
XML
まずはXMLのパースから。PHP4でXMLをパースする方法は、EC Studioの記事にまとまっているのがあります。
PHP4でのXMLデータの取り扱い – EC studio 技術ブログ
今回はこの中のKeith Devens – PHP XML Libraryを使いました。リンク先からライブラリをダウンロードできます。
(記事を書いているときに気づきましたが、うまくパースできない時もあるって書いてありますね^^;)
使い方は本当に簡単で、一つのファイルをインクルードして関数を使うだけです。
//xml.phpが今回使うライブラリです。
include('xml.php');
//$xml_dataはXMLファイル。
$data = XML_unserialize($xml_data);
こうして関数を通すと、連想配列になるんですが、今回は日本語が文字化けしてしまって使い物になりませんでした。
JSON
というわけで使ったのがJSON形式。こちらのパースにはJsphonというPEARライブラリを使います。
ただ、こちらのJsphonはPEARに依存してないみたいなので、今回は普通にDLしたファイルをインクルードして使いました。
使い方は株式会社RYUSのブログが詳しいです。
Jsphonをcodereposにアップロードしました。 – XOOPS専門-株式会社RYUS
このJsphonの入手なんですが、公開元が閉鎖してしまったため、僕はこちらのサイトからDLしました。
Jsphonのインストール(リンク切れで困っている人へ)
使い方は簡単で、単純にJSONファイルをデコードするだけならJsphon1.0.1/Jsphon/Decoder.phpを使えばOKです。こんな感じ。
require_once 'Jsphon/Decoder.php'; $json = new Jsphon_Decoder(); //$json_dataはJSONファイル。 $data = $json->decode($json_data);
$dataは連想配列になります。日本語も文字化けしません。
というわけで、PHP4でのXMLとJSONのパース方法の紹介でした。どうしてもPHP4の環境でXMLやJSONを使う必要に迫られたときに、こういうライブラリも知っておかなくてはいけませんね。
