Home > その他 > 郵便番号 > php の利用 > zipcloud の API を使用( 171 )
classの本体
<?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){ //郵便番号の書式が正しい時
$code=str_replace("-","",$this->zip_code);
$data = file_get_contents("http://zipcloud.ibsnet.co.jp/api/search?zipcode={$code}"); //ricollab から情報を取得
$json = json_decode($data);
//var_dump( $json);
if(!is_null($json->results)){ //該当する郵便番号が存在するとき
$this->pref = $json->results[0]->address1;
$this->pref_kana = $json->results[0]->kana1;
$this->city = $json->results[0]->address2;
$this->city_kana = $json->results[0]->kana2;
$this->town = $json->results[0]->address3;
$this->town_kana = $json->results[0]->kana3;
$this->status=true;
}else{ //該当する郵便番号が存在しないとき
$this->status=false;
$this->error_msg="該当する郵便番号が存在しません。";
$this->results=new stdClass();
$this->results->address1=$this->results->kana1=$this->results->address2=$this->results->kana2=$this->results->address3=$this->results->kana3="";
}
}
}
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;
}
}
?>webページの表示
<?php
if(isset($_POST["search"])){ //住所検索ボタンが押された時
$zip=$_POST["zip"];
$obj=new ZipCode($zip);
if($obj->GetStatus()){
$err="";
}else{
$err="{$obj->GetErrMsg()}";
}
list($pref,$pref_kana,$city,$city_kana,$town,$town_kana)=$obj->GetListAll();
}else{
$err="";
$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="10" value="{$pref_kana}"></td></tr>
<tr><th>市区町村:</th><td><input type="text" name="city" size="35" value="{$city}"><input type="text" name="city_kana" size="35" value="{$city_kana}"></td></tr>
<tr><th>町域:</th><td><input type="text" name="town" size="35" value="{$town}"><input type="text" name="town_kana" size="35" value="{$town_kana}"></td></tr>
</table>
</form>
</div>
DOE;
echo $ret;
?>