[PHP]改行を含むCSVの特定行を削除してCSVに再保存する方法
改行を含むCSVの特定行を削除してCSVに再保存する方法は以下の通り。fopenを使用すると改行を含むCSVを正しく読み込めないのでSplFileObjectを使用している。
またSplFileObjectを使用してオリジナルに書き込み指定しながら、読み込みができなかったので、一旦データの退避先としてCSVをtemp.csvにコピーしている
$uploaded_file = './uploaded/csv.csv'; //オリジナルCSV
$temp_csv_file = './uploaded/temp.csv'; //データ退避先
$flg = copy($uploaded_file, $temp_csv_file); //オリジナルからデータをコピーする
if ($flg) {
echo "コピー成功です";
} else {
echo "コピー失敗です";
}
$inputFile = new SplFileObject($temp_csv_file); //コピーCSVからデータを読み込み
$inputFile->setFlags(SplFileObject::READ_CSV);
$outputFile = new SplFileObject($uploaded_file, 'w');//オリジナルに削除後のCSVデータを書き込み指定
foreach ($inputFile as $array) {
if($array[0]==='特定文字'){
continue;
}else{
$outputFile->fputcsv($array); //配列をオリジナルCSVファイルに書き込み
}
}