CSVデータを読み込み表示させる

PHPでCSVデータを読み込む関数として fgetcsvという有名な関数があります。これを使うことでCSVファイルを取得できるのですがこれは文字化けを起こす事が多々あります。そのためネットサーフィンなどで検索して探したコードを参考にしたのが以下のコードです。

function fgetcsv_reg (&$handle, $length = null, $d = ‘,’, $e = ‘”‘) {
    $d = preg_quote($d);
    $e = preg_quote($e);
    $_line = “”;
    while ($eof != true) {
        $_line .= (empty($length) ? fgets($handle) : fgets($handle, $length));
        $itemcnt = preg_match_all(’/’.$e.’/', $_line, $dummy);
        if ($itemcnt % 2 == 0) $eof = true;
    }
    $_csv_line = preg_replace(’/(?:\\r\\n|[\\r\\n])?$/’, $d, trim($_line));
    $_csv_pattern = ‘/(’.$e.’[^'.$e.']*(?:’.$e.$e.’[^'.$e.']*)*’.$e.’|[^'.$d.']*)’.$d.’/';
    preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
    $_csv_data = $_csv_matches[1];
    for($_csv_i=0;$_csv_i<count($_csv_data);$_csv_i++){
        $_csv_data[$_csv_i]=preg_replace(’/^’.$e.’(.*)’.$e.’$/s’,'$1′,$_csv_data[$_csv_i]);
        $_csv_data[$_csv_i]=str_replace($e.$e, $e, $_csv_data[$_csv_i]);
    }
    return empty($_line) ? false : $_csv_data;
}

もし、文字化けに悩まされているなら試してみる価値があるかもしれません。

そして読んだCSVデータを保存するのがこちらのコードです。
function excel_data_get($csv_out)

// setlocale(LC_ALL, ‘ja_JP’);
 $s = 0;
 global $result_d; 
 if( $handle = fopen($csv_out, ‘r’ ) )
 {
     while( ( $lines = fgetcsv_reg( $handle ) ) !== FALSE )
     {
         for( $i = 0; $i < count( $lines ); $i ++ ) //count( $lines )は2
            {
    $s = $s + 1;
    $result_d[$s]= $lines[$i];
   }
  }
 }
 fclose($handle);
}

csvファイルを読み込んで配列に格納をしています。これによりデータを取得し利用することができるようになります。

これらをどのような時に利用するかですが例えばアフェリエイトやドロップシッピングなどでデータをcsvファイルに格納しておきそれをphpを使って読み込ませ、表示することなどに利用できます。すると大量のページがすぐにできます。

ショップなどを作る場合、商品数はある程度必要になるのですが、個別に作るのはコピペしてもかなりの時間がかかります。あらかじめ仕組みを作っていくことで労力がかなり軽減されるのです。

Leave a Reply