0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

郵便番号検索を作る

Posted at

URLの数字で検索して住所を表示するものを作りたいと思います

郵便番号と住所が入ったファイルから郵便番号を検索して住所を表示するという仕組みです

fgetcsvを使った場合とfopenを使った場合の二種類を書きます

まずは共通のコード

$postnum = $_GET["post"];
// urlの末尾の数字

$fp = fopen("ここにファイルの名前", "r");
// fopen ファイルをオープンする "r"はテキストファイルの読み込み

$str = mb_convert_encoding($fp,"utf-8","sjis");
// mb_convert_encoding sjisからutf-8に変換する

次にfgetcsvを使った場合

while( !feof($fp) ) { 
// while文でCSVファイルのデータを1つずつ繰り返し読み込む
//feofはファイルポインタが終端に達したか確認する
    $data = fgetcsv($fp);
    //fgetcsvとはfopen “r”モードで読み込みしたcsvファイルのデータを配列にして出力する関数
    if (is_array($data)==false) { break; }
    //is_array 変数が配列かどうかを検査する
    if ($data[2] == $postnum) {// $data[2]に郵便番号が入っている
        echo mb_convert_encoding($data[6]."<br>","utf-8","sjis");
        //$data[2]つまり郵便番号と$postnumが一緒だった場合に$data[6](住所)を出力する
    }
}
fclose($fp); // fcloseはfoopenとセット

次にfopenを使った場合

while( !feof($fp) ) {
// while文でCSVファイルのデータを1つずつ繰り返し読み込む
//feofはファイルポインタが終端に達したか確認する
    $line = fgets($fp);
    //fgetsとはfopenでオープンしたファイルから一行分読み取る関数
    if (strlen($line)==0) { break; }
    //$strlenは$lineの文字列の長さを取得する
    //つまり文字がなくなったらbreakする
    $line = mb_convert_encoding($line,"utf-8","sjis");
    //$lineをsjisからutf-8に変換する
    $line = str_replace('"','', $line);
    //str_replaceでダブルクォーテーションを消す (ファイルの中は各項目ごとに,で区切られていてそれに""がついている 例ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ",")
    $data = explode(",", $line);
    //,ごとに$lineを分割する
    if ($data[2] == $postnum) {
        echo $data[6]."<br>";
    //data[2](郵便番号)とurlの数字が同じだった場合にdata[6](住所)を表示する
    }
}
fclose($fp);

fgetcsv関数:ファイル内のデータの1行データ(csv形式)を配列データに変更して取得する。

while分を回す
fgetscsvで一行取得
if分でデータが配列かどうか検査する
データを出力

fgets関数:ファイル内のデータを1行ずつ取得する。

while文を回す
fgetsで一行取得
if文で文字列の長さが0になると停止するようにする
sjisからutf-8に変換
ダブルクォーテーションを消す
文字列を","ごとに分割する
データを出力

という違いがあります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?