PHP5にはSimpleXMLという非常に便利な機能があります。XMLをオブジェクトに入れるだけで簡単にXMLの要素を取り出すことができます。
しかしレンタルサーバーによっては、いまだPHP4を提供しているところも数多く、XMLの扱いに頭を悩ませている人も多いのではないでしょうか?しかも提供されているAPIの多くはXML形式で返してきます。思わぬところでXMLを使わなければいけないシーンに出くわすこともあるでしょう。
そんな訳で、今日は便利なライブラリを紹介します。
PHP XML Libraryという名前で、下記のリンクからDownloadすることができます。
Keith Devens .com(PHP XML Library)
使い方は簡単!
<?php
include('xml.php');
$file = file_get_contents($URL);
$data = XML_unserialize($xml);
?>
includeで先ほどDownloadしたファイルを読み込み、XML_unserializeという関数にxmlファイル渡してあげれば$dataに配列に変換されたデータが格納されます。
ね、簡単でしょ。
環境によっては日本語が?????と変換されてしまうことがあります。その場合はxml.phpに修正を加えなければなりません。
function XML(){
$this->parser = &xml_parser_create();
xml_parser_set_option(&$this->parser, XML_OPTION_CASE_FOLDING, false);
xml_set_object(&$this->parser, &$this);
xml_set_element_handler(&$this->parser, 'open','close');
xml_set_character_data_handler(&$this->parser, 'data');
}
この部分を下記のように書き換えます。
function XML(){
$this->parser = &xml_parser_create("UTF-8");
xml_parser_set_option(&$this->parser, XML_OPTION_CASE_FOLDING, false);
xml_set_object(&$this->parser, &$this);
xml_set_element_handler(&$this->parser, 'open','close');
xml_set_character_data_handler(&$this->parser, 'data');
}
実は書き換える場所は1カ所ですけどねw
$xml_parser_create("UTF-8");
の部分です。これで??????の部分も正しく表示されるようになります。