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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です