toshieeeee
6/24/2016 - 1:18 PM

日本郵便のページにある郵便番号のデータを利用し、「郵便番号」「住所」のデータを表示

日本郵便のページにある郵便番号のデータを利用し、「郵便番号」「住所」のデータを表示

<?php

setlocale(LC_ALL, 'ja_JP.UTF-8');

$csv = array();
$file = 'iwate.csv';

//エンコーディング処理

$data = file_get_contents($file); // string型に変更
$data = mb_convert_encoding($data, 'UTF-8', 'sjis-win'); //この関数を通すことで文字化けが解消される

//初期化・一時ファイル作成

$temp = tmpfile(); 
$csv  = array();

fwrite($temp, $data); //$tempファイルに、$dataの内容を書き込む。
rewind($temp); //ファイルポインタを先頭の位置に戻す

while (($data = fgetcsv($temp, 0, ",")) !== FALSE) {

$data = implode(",", $data); //一行づつ、配列を","で連結して、文字列として返す
$csv[] = htmlentities($data);

}

$result = array(); //多次元配列を実現して、必要なデータだけを取り出せる形にする
$table = '';

for ($i = 0; $i < 30; $i++){ //表示件数を指定

  $result[$i] = explode(",", $csv[$i]); 

  $table .= '<tr>';

  $table .= '<td>' .$result[$i][2]. '</td>'; //郵便番号を格納

  for ($k = 6; $k <= 8; $k++){

    $village[$i][$k] =  $result[$i][$k]; //住所情報を格納

    $table .= '<td>' .$village[$i][$k]. '</td>';

  }

  $table .= '</tr>' ;

}
 
fclose($temp);

?>


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Document</title>

<style type="text/css">
  
  .table {
    border-collapse: collapse;
  }
  .table th {
    background-color: #cccccc;
  }

  .table td {
    padding: 4px;
  }

  .t-head td {
    font-weight: bold;
  }

</style>
</head>
<body>

  <p>以下にファイルから読み込んだ住所データを表示</p>

  <p>住所データ(岩手県)</p>

  <table class="table" border=1>
    
    <tr class="t-head">
      <td>郵便番号</td>
      <td>都道府県</td>
      <td>市町村</td>
      <td>町域</td>
    </tr>

    <?php echo $table ?>

  </table>


</body>
</html>