[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ファイルに書き込み } }