Home > その他 > 郵便番号 > php の利用 > zip.cgis.biz の API を使用( 172 )
<?php
class ZipCode{
private $pref;
private $city;
private $town;
private $pref_kana;
private $city_kana;
private $town_kana;
private $office;
private $office_kana;
private $zip_code; //ハイフォン付きの書式
private $status;
private $error_msg;
function __construct($zip){ //ハイフォンなしで引数をわたす
if(empty($zip)){
$this->status=false;
$this->error_msg="郵便番号が入力されていません。";
}else if(preg_match("/^\d{7}$/",$zip)){
$this->zip_code=preg_replace("/^([0-9]{3})([0-9]{4})$/","$1-$2",$zip);
$this->status=true;
}else if(preg_match("/^([0-9]{3})-([0-9]{4})$/",$zip)){
$this->zip_code=$zip;
$this->status=true;
}else{
$this->status=false;
$this->error_msg="郵便番号 [ {$zip} ] が正しくありません。";
}
if($this->status){ //郵便番号の書式が正しい時
$office="";
$office_kana="";
$code=str_replace("-","",$this->zip_code);
$data = simplexml_load_file("http://zip.cgis.biz/xml/zip.php?zn={$code}"); //zip.cgis.biz から情報を取得
if($data->result[8]->attributes()>0){ //該当する郵便番号が存在するとき
$chld = $data->ADDRESS_value->children();
foreach($chld as $key){
if($key['state']!=''&&$key['state']!='none') $this->pref=$key['state'];
if($key['state_kana']!=''&&$key['state_kana']!='none') $this->pref_kana=$key['state_kana'];
if($key['city']!=''&&$key['city']!='none') $this->city=$key['city'];
if($key['city_kana']!=''&&$key['city_kana']!='none') $this->city_kana=$key['city_kana'];
if($key['address']!=''&&$key['address']!='none') $this->town=$key['address'];
if($key['address_kana']!=''&&$key['address_kana']!='none')$this->town_kana=$key['address_kana'];
if($key['company']!=''&&$key['company']!='none') $this->office=$key['company'];
if($key['company_kana']!=''&&$key['company_kana']!='none')$this->office_kana=$key['company_kana'];
}
}else{ //該当する郵便番号が存在しないとき
$this->status=false;
$this->error_msg="該当する郵便番号が存在しません。";
}
}
}
function __destruct(){
}
function GetPref(){
return $this->pref;
}
function GetPrefKana(){
return $this->pref_kana;
}
function GetCity(){
return $this->city;
}
function GetCityKana(){
return $this->city_kana;
}
function GetTown(){
return $this->town;
}
function GetTownKana(){
return $this->town_kana;
}
function GetOffice(){
return $this->office;
}
function GetOfficeKana(){
return $this->office_kana;
}
function GetListAll(){
return array($this->pref,$this->pref_kana,$this->city,$this->city_kana,$this->town,$this->town_kana);
}
function GetList(){
return array($this->pref,$this->city,$this->town);
}
function GetListKana(){
return array($this->pref_kana,$this->city_kana,$this->town_kana);
}
function GetStatus(){
return $this->status;
}
function GetZipCode(){
return $this->zip_code;
}
function GetErrMsg(){
return $this->error_msg;
}
}
?><?php
$err="";
if(isset($_POST["search"])){ //住所検索ボタンが押された時
$zip=$_POST["zip"];
$obj=new ZipCode($zip);
if(!$obj->GetStatus()){
$err="{$obj->GetErrMsg()}";
}
list($pref,$pref_kana,$city,$city_kana,$town,$town_kana)=$obj->GetListAll();
$office=$obj->GetOffice();
$office_kana=$obj->GetOfficeKana();
}else{
$zip="";
$pref="";
$pref_kana="";
$city="";
$city_kana="";
$town="";
$town_kana="";
$office="";
$office_kana="";
}
$ret=<<<DOE
<div style="text-align; left;padding-left:10px;">
<form method="post" action="{$_SERVER["REQUEST_URI"]}">
<table>
<tr><th>郵便番号:</th><td><input type="text" name="zip" size="7" maxlength="7" value="{$zip}"><input type="submit" name="search" value="住所検索"> ※ハイフォンなしで入力してください。{$err}</td></tr>
<tr><th>都道府県:</th><td><input type="text" name="pref" size="8" value="{$pref}"><input type="text" name="pref_kana" size="15" value="{$pref_kana}"></td></tr>
<tr><th>市区町村:</th><td><input type="text" name="city" size="30" value="{$city}"><input type="text" name="city_kana" size="40" value="{$city_kana}"></td></tr>
<tr><th>町域:</th><td><input type="text" name="town" size="30" value="{$town}"><input type="text" name="town_kana" size="40" value="{$town_kana}"></td></tr>
DOE;
if($office!="") $ret.='<tr><th>企業名:</th><td><input type="text" name="town" size="30" value="'.$office.'"><input type="text" name="town_kana" size="40" value="'.$office_kana.'"></td></tr>';
$ret.=<<<DOE
</table>
</form>
</div>
DOE;
echo $ret;
?>