• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでCSVをへんしゅうするには?)

PHPでCSVを編集する方法

このQ&Aのポイント
  • PHPでCSVを編集する方法について困っています。CSV編集の際にうまくいかず、追加と削除ができない状況です。
  • ファイルの中身が消えてしまうため、CSVの編集が進められません。
  • CSV編集に関する問題を解決するためのPHPのコードをご教示いただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

どういう「編集」になっているのかさっぱりわかりませんが、例えば行単位の編集になっていれば(テキストファイルですから)一気に当該行だけ書き替えることは出来ません。 ・元ファイルをfile()で全部読み込んで、配列の所定の行を編集した内容で置き換えてから  まとめて書き出す ・元ファイルを読みながら別ファイルに書き出す(所定の行は読み込んだ内容でなく編集した  内容を書き出す)。終わったら別ファイルを元ファイルに上書き。 などの手法があります。 提示されたソースでは、fileで読み込んで順次処理しているようですが、所定の行以外のときに(ファイル全体を読み書きする)file_get_contents/file_put_ccontentsという意味不明な処理をしています。これは一体どういう意図でしょうか? http://php.net/manual/ja/function.file-get-contents.php http://php.net/manual/ja/function.file-put-contents.php なお「CSV」である以上、explodeやimplodeで処理すべきではありません(カンマで分割/連結するだけというのはダメです)。 (e.g.) $data = @file($filecsv); // 全体を読み込む $fh = @fopen($filecsv, "w"); // 書き込み用ハンドル foreach ($data as $val) { $array = str_getcsv($val); // CSVの行を分割 if($array[0] != $upd){ fputs($fh, $val); // $valの最後に改行があるのでそのまま } else { fputcsv($fh, array($number,$category,$dating)); // fputcsvが改行を自動付与 } fclose($fh);

owo0223
質問者

補足

回答有難う御座います。 大体の構造は、少し理解できたのですが、 phpのバージョンが5.2.4でstr_getcsv関数が5.3.xからみたいなので、代わりになる槍かを自分なりに検索したのですが、うまく組めませんでした。