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に変換
ダブルクォーテーションを消す
文字列を","ごとに分割する
データを出力
という違いがあります。