http://zip.cgis.biz/ ここで公開されている郵便番号→住所変換のAPIを利用
/*
* 郵便番号をAPIに送信して住所情報をもらう
* @param string $zip
* @return $address
* 以下の電文を解析する
* <?xml version=”1.0″ encoding=”utf-8″ ?>
* – <ZIP_result>
* <result name=”ZipSearchXML” />
* <result version=”1.01″ />
* <result request_url=”http%3A%2F%2Fzip.cgis.biz%2Fxml%2Fzip.php%3Fzn%3D1030000″ />
* <result request_zip_num=”1030000″ />
* <result request_zip_version=”none” />
* <result result_code=”1″ />
* <result result_zip_num=”1030000″ />
* <result result_zip_version=”0″ />
* <result result_values_count=”1″ />
* – <ADDRESS_value>
* <value state_kana=”トウキョウト” />
* <value city_kana=”チュウオウク” />
* <value address_kana=”イカニケイサイガナイバアイ” />
* <value company_kana=”none” />
* <value state=”東京都” />
* <value city=”中央区” />
* <value address=”以下に掲載がない場合” />
* <value company=”none” />
* </ADDRESS_value>
* </ZIP_result>
*/
function getAddressByZip($zip)
{
if(!$zip) return “”;
$zip = str_replace(“-“,””,$zip);
require_once “XML/Unserializer.php”;
// APIに郵便番号を問い合わせる
$url = “http://zip.cgis.biz/xml/zip.php?zn={$zip}”;
// XMLを解析する
$options = array(‘complexType’ => ‘array’);
$xmldoc = join(“”,file($url));
$Unserializer =& new XML_Unserializer($options);
$Unserializer->setOption(‘parseAttributes’, true);
$status = $Unserializer->unserialize($xmldoc);
$data = $Unserializer->getUnserializedData();
// 結果に住所情報がない場合はエラー
if(!is_array($data[‘ADDRESS_value’])) return “”;
// 結果の3階層目を解析して[state=>”東京都”]の形式で配列にして返却する
$return_array = array();
foreach($data[‘ADDRESS_value’] as $k=>$v){
foreach($v as $k2=>$v2){
foreach($v2 as $k3=>$v3){
$return_array[$k3] = mb_convert_encoding($v3,’EUC-JP’,’UTF-8′);
}
}
}
return $return_array;
}