fopen でファイルを読み込んで、CSV処理を書いていると、
CSVのセル内に改行があり、ハマったのでメモ
fopen で書いていたがセル内の改行がうまく取得できない
$file = "test.csv";
$fp = fopen($file, "r");
while($line = fgets($fp)) {
$data = explode(",", $line);
//DB保存など
}
fclose($fp);
このような感じでコードを書いていたが、
CSVのセル内に改行があると、うまくデータが取得できない
解決方法
SplFileObject クラスを書けば、うまいこと取得してくれた
$file = new SplFileObject($file);
$file->setFlags(
\SplFileObject::READ_CSV |
\SplFileObject::READ_AHEAD |
\SplFileObject::SKIP_EMPTY |
\SplFileObject::DROP_NEW_LINE
);
foreach ($file as $data) {
error_log(print_r($data, true));
//1行ずつ配列として取得できる
}
超ラク