'."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= 'XMLを利用して住所入力補助を行う'."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= '

XMLを利用して住所入力補助を行う

'."\n"; $html .= '

※郵便番号を入力して検索ボタンをクリックすると、各種住所入力が入力補助されます。

'."\n"; $html .= '

'.$message.'

'."\n"; $html .= '
'."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= ''."\n"; $html .= '
郵便番号(3桁+4桁)'."\n"; $html .= '〒'."\n"; $html .= '- '."\n"; $html .= ''."\n"; $html .= '
都道府県
都道府県カナ
市区町村
市区町村カナ
その他住所
その他住所カナ
'."\n"; $html .= ''."\n"; $html .= '
'."\n"; $html .= ''."\n"; $html .= ''."\n"; echo $html; exit; // ===================================================================================================== // 郵便番号検索時の入力値をチェックする function CheckValueZIP($zip1,$zip2,$ver=0) { $err = ''; // 入力値に誤りがある場合、メッセージを格納する // 連結 $zip = $zip1.$zip2; if($zip == '') { $err .= '郵便番号が未入力です。
'; } else { // ver=0 で現行郵便番号形式のチェック // ver=1 で旧郵便番号形式のチェック if($ver == 0) { if(!preg_match('/^[0-9]{7}$/',$zip)) { $err .= '郵便番号の形式に誤りがあります。
'; } } elseif($ver == 1) { if(!preg_match('/^[0-9]{3}$/',$zip) && !preg_match('/^[0-9]{5}$/',$zip)) { $err .= '郵便番号の形式に誤りがあります。
'; } } } return $err; } // APIと通信してXMLを配列に格納 function GetAddress($zip1,$zip2,$ver=0) { // 念のため再度、形式チェック if(CheckValueZIP($_POST['zip1'],$_POST['zip2'])) { die('zip format Error'); } // アクセスするURL作成 $url = REQUEST_URL.'?zn='.$zip1.$zip2; if($ver == 1) { $url .= '&ver=1'; } // XML処理 // 初めて使うがいまいちわからん... $GLOBALS['xml']['ADDRESS_value'] = array(); $GLOBALS['xml']['values'] = array(); // 住所情報格納用 $GLOBALS['xml']['result'] = array(); // その他情報格納用 function startElement($parser, $name, $attrs) { // $name は要素名 // $attrs は属性名をキーとした連想配列 if($name == 'ADDRESS_value') { $GLOBALS['xml']['ADDRESS_value'][] = $attrs; } elseif($name == 'value') { // ADDRESS_value出現ごとにカウントアップしつつ、住所情報を格納 // 0 からスタートしたいので -1 する。 $i = count($GLOBALS['xml']['ADDRESS_value']) - 1; foreach($attrs as $key=>$val) { $GLOBALS['xml']['values'][$i][$key] = $val; break; } } elseif($name == 'result') { foreach($attrs as $key=>$val) { $GLOBALS['xml']['result'][$key] = $val; break; } } } function endElement($parser, $name) { // なにもしない } $xml_parser = xml_parser_create(); xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0); xml_set_element_handler($xml_parser, "startElement", "endElement"); if (!($fp = fopen($url,"r"))) { die('could not open XML'); } while ($data = fread($fp, 4096)) { // 文字コード変換 $data = mb_convert_encoding($data,STR_CODE,'utf-8'); if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d",xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser))); } } xml_parser_free($xml_parser); $result = $GLOBALS['xml']; unset($GLOBALS['xml']); // result_code 正常=>1 異常=>0 if($result['result']['result_code'] == 0) { die('Application Error: code '.$result['result']['error_code'].' / message '.$result['result']['error_note']); } return $result; } // 住所データを1つにする function ChangeSingle($result_values) { if(count($result_values)) { foreach($result_values as $value) { $result_values_single = $value; break; } return $result_values_single; } else { return false; } } ?>