SplFileObjectを用いて、簡単にcsvファイルの中身を取得できるため参考にしてください。
サンプルコード
/**
* @param string $file_name
* @param string $from_encoding
* @param string $to_encoding
* @return array
*/
public function csvFileImport(
string $file_name,
string $from_encoding = 'SJIS-win',
string $to_encoding = 'UTF-8'
) {
// ファイルの取得
$csv = new \SplFileObject($file_name);
// フラグのセット
$csv->setFlags(\SplFileObject::READ_CSV);
// ポインタの初期化
$csv->rewind();
$csv_data = [];
foreach ($csv as $per_row) {
// ヘッダ行はスキップ
if ($csv->key() == 0) {
continue;
}
// 空行はスキップ
if (count($per_row) == 0) {
continue;
}
foreach ($per_row as &$per_value) {
// 値毎の処理がある場合はここに記載
// 文字エンコード
$per_value = mb_convert_encoding($per_value, $to_encoding, $from_encoding);
}
// バリデーションを行う場合はここに記載
$csv_data[] = $per_row;
}
return $csv_data;
}
フラグ説明
フラグ名 | 説明 |
---|---|
DROP_NEW_LINE | 行末の改行を読み飛ばす。 |
READ_AHEAD | 先読み/巻き戻しで読み出す。 |
SKIP_EMPTY | ファイルの空行を読み飛ばす。READ_AHEADと併用すること。 |
READ_CSV | CSVを行として読み込んでいく。 |
PHPのVersion 5.3.9でSKIP_EMPTY
の値が6から4に変更されました。
こちらのように不安定であるため、DROP_NEW_LINE
、READ_AHEAD
、SKIP_EMPTY
は使わない方が良いと思います!