文書更新:2019年06月26日(水) 午後11時07分00秒

Home > その他 > 郵便番号 > php の利用 > zipcloud の API を使用( 171 )

はじめに

  1. zipcloudのAPIを使用して作ってみました。
  2. 事業所の郵便番号では検索できません。
  3. 同じ郵便番号で複数の情報がある場合は、その中の1つを表示します。
  4. クラスを利用してプログラムしてあります。

郵便番号から住所を検索

郵便番号: ※ハイフォンなしで入力してください。
都道府県:
市区町村:
町域:

classの本体

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;
	}
}
?>

htmlの表示部

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;
?>