ダブルクォーテーションで囲まれていないcsvファイルをPHPで扱う方法


たくさんのデータの登録を一気に行うのに、CSVでの登録は便利です。
Excelで作ったデータをそのままアップロードできると、お客さんでも簡単に使い慣れます。
ですが、PHPのfgetcsvを使ってCSVをアップロードしようと思うと、上手くアップロードできません。
PHPのfgetcsvが扱うCSVではテキストはダブルクォーテーションで括るということになっていますが、
Excelで出力したCSVではダブルクォーテーションがついていないため上手くアップできませんでした。
ダブルクォーテーションがついたCSVを書き出す方法が見つからなかったのですが、
PHP側でファイルを開く前に以下のコードを入れることでダブルクォーテーションが無いCSVでも扱うことができました。
文字コードに合わせて使ってください。

setlocale(LC_ALL, ‘ja_JP.UTF-8′);
setlocale(LC_ALL, ‘ja_JP.sjis’);
setlocale(LC_ALL, ‘ja_JP.EUC-JP’);

サンプル:
setlocale(LC_ALL, ‘ja_JP.UTF-8’);
$fp = fopen($file, “r”);
while(($lines = fgetcsv($fp)) !== FALSE){
/* 処理 */
}

備忘も兼ねてここに残しておきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です