LoginSignup
4
3

More than 5 years have passed since last update.

MacのExcelで作られたCSVを文字化けなく配列にするサンプルコード

Last updated at Posted at 2015-01-13

概要

MacのMicrosoft Office Excelで作られたCSVファイルをPHP5.5で連想配列にするサンプルコードです。

CSVファイルのfilename(ファイルパス)を引数で渡すと、連想配列をreturnします。
CSVの文字コードを事前に変更する必要はありません。
returnする配列の文字コードはUTF8になります。

配列は、CSVファイルの1行目をkeyにした連想配列になります。

php
function loadCSV($filename) {
    setlocale(LC_ALL, 'ja_JP.UTF-8');
    $data = file_get_contents($filename);
  //macで作られたCSVの改行コードを置換
    $data = ereg_replace("\r\n|\r|\n", "\n", $data); 
    $data = mb_convert_encoding($data, 'UTF-8', 'sjis-win');
    $tmp = tmpfile();
    $csv = array();

    fwrite($tmp, $data);
    rewind($tmp);

    $i = 0;
    while (($data = fgetcsv($tmp, 0, ",")) !== FALSE) {
        if ($i == 0) {
            foreach ($data as $colum) {
                $colums[] = $colum;
            }
        } else {
            $csv[] = $data;
        }
        $i++;
    }

    foreach ($csv as $data) {
        $return[] = array_combine($colums, $data);
    }
    return $return;
}
4
3
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
4
3