• ベストアンサー

PHPでCSVファイルを編集するときのモード

ご覧頂きましてありがとうございます。 PHPファイルからCSVファイルを読み込んで、編集(閲覧+追加+変更)をする場合のモードは、 "r"ではないとしたら何になるでしょうか? 調べてもよく分からず、お願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
noname#244856
noname#244856
回答No.1

「r+b」「a+b」「c+b」あたりを使っておけばいいと思います。マニュアルに記述があります。 PHP Manual - fopen http://www.php.net/manual/ja/function.fopen.php 但し、こちらも合わせてお読みください。 Pentan.info - fgetcsv関数を文字化け対応 setlocaleの文字コード指定 http://pentan.info/php/fgetcsv_char.html Qiita - ファイルオープンモードに関するマニュアルの記述は間違っている http://qiita.com/mpyw/items/3adcec3c66e515895b08 特定の行だけ編集したいような場合、全部読み込んで全部で上書きするしかありません。これが非効率になってくるような規模になれば、CSVファイルの仕様をその時点で取りやめ、MySQLなどのデータベースに移行すべきです。

-q7P2izb__
質問者

お礼

ご回答ありがとうございます!! PHPに詳しい方からのご意見大変参考になります。 正直CSV形式から卒業したいのですが、 MySQLが苦手でして克服しなければいけないなと思いました。 いずれにせよ、モードが分かって良かったです。 ありがとうございました。

関連するQ&A

  • PHPでCSVファイルを編集したい

    PHPを触りだして間もない者です。 PHPでCSVファイルを編集したいのですが、上手くいきません。 CSVファイルの中身は{商品番号,名前,住所,年齢}が数行入力されています。 具体的にはPHPで引数の商品番号を基にCSVファイルで編集する行数を決定して、その行の一部項目を変更したいのですが、良い方法はありますでしょうか?

    • 締切済み
    • PHP
  • ブラウザ上でcsvファイルの編集

    お世話になっています。 ブラウザ上でサーバにあがっているcsvファイルの編集をしたいと思っています。 そこで質問なのですが、 csvファイルをExcelみたいにテーブル表示で編集出来るもの(csvエディタ?)はあるのでしょうか? 特に、行の挿入・削除、列の追加・削除、設定に1行目をタイトルとして認識する、文字列をダブルクォーテーションで括るかどうかなどがあればうれしいです。 なければphpなどで、formとinputで自作ということになるのでしょうが・・・。 既にいいものがあればそちらを使いたいということで質問させていただきました。 http://www.ahref.org/cgi/csveditor/ のものはFirefoxでは動作しなかったので諦めました。

  • PHPでのcsvファイルの扱い方

    PHPを使ってcsvファイル内の情報を取得しようと思っていますが初心者でよく分かりません。 教えてください。よろしくお願い致します。

    • 締切済み
    • PHP
  • PHPとCSVファイル

    CSVファイルを用いて検索するプログラムを書いています。 CSVファイルの読み込みはできたのですが その後が詰まってしまい、質問させていただくことにしました。 流れとしてはdealer.php(ディーラー)→color.php(色)→sex.php(性別)と続き sex.phpで 男性(0)ならkekka.php(結果)へ。 女性(1)ならnaisou.php(内装)に移動します。 移動方法はすべてsubmitボタンを使用。 car.csv ディーラー,色,性別(0→男、1→女) toy,siro,0 toy,siro,1 toy,kuro,0 toy,kuro,1 nis,siro,0 nis,siro,1 nis,kuro,0 nis,kuro,1 hon,siro,0 . , . . , . 項目の多少の修正と追加があるのでCSVファイルは使用したいです。 PHPで性別の0と1を検索し、 それぞれのページに移動させるにはどうすればいいのでしょうか? 初めてプログラムを組んでいるため、分かりやすい解説が あるとうれしいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでCSVの一部の行を編集したい

    掲示板の管理画面の様な感じで、 PHPでCSVファイル内の一行を編集するフォームを作りたいと思っています。 フォームには新規投稿と、編集用のボタンがあり、 編集用で送られてきたものを受け取るPHPプログラムは以下の通りです。 if($mode == "edit"){ foreach($csv as $val){ list($li_id, $li_date, $li_comment) = split("\t",$val); $fp = fopen(csv' , 'w'); if($li_id == $info_no){ $csv[$li_id] = "$li_id\t$date_y/$date_m/$date_d\t$comment\t\n"; }else{ $csv[$li_id] = "$li_id\t$li_date\t$li_comment\t\n"; } } $fp = fopen('csv' , 'w'); fputs ($fp, $csv[$li_id]); for ($i=0; $i<1000; $i++){ fputs ( $fp,$csv[$i]); } fclose($fp); } としたのですが、うまくいきませんでした。 なぜか、編集した文章と、最後に新規で追記した文章が追加されてしまいます・・・・。 「あいうえお」を新規で追記した後、 1. あいうえお 2. かきくけこ 3. さしすせそ 4. たちつてと の2を編集すると 1.あいうえお 1.あいうえお 2.かきくけこ(編集した) 3.さしすせそ 4.たちつてと となってしまいます。。。。 新規で追記されたものがない場合は 空行が追記されてしまいます。 いろいろ試行錯誤したのですが、さっぱりわかりません。 教えて下さい。

    • 締切済み
    • PHP
  • csvファイルを編集したいと思っています。

    csvファイルを編集したいと思っています。 エクセルなどの表計算ソフトのような一覧で編集するのではなく、 ファイルメーカーみたいなソフトで編集したいです。 編集したものを最後、csvで吐き出したいです。 ファイルメーカーはお金がかかるので、フリーソフトで探しています。 初心者なので、質問下手ですみません。 教えていただけると嬉いです。

  • Excelでcsvファイルをエクスポートしても、""を残しておきたい

    csvファイルをインポートしてExcelで編集し、また、csvファイルとして書き出しテキストエディタで開くと、元のcsvファイルにはあった文字列の引用符「""」が消えてしまいます。 以前にも同じ質問があったようなのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=777349 情報を編集するのではなく、新しく追加したいので""を※※に置換しておくというような方法は使えません。 誰か分かる方教えてください。 よろしくお願いします。m(_ _)m

  • ExcelでのCSVファイルの編集について、

    ExcelでのCSVファイルの編集について、 オートフィルタ機能を使いたいため、 ExcelでCSVファイルの編集しようとしているのですが、ちょっと苦戦しています。。。 私が試してみたこと 1.もとのCSVファイルの拡張子を○○.csv → ○○.txtに変更。   ↓ 2.Excelの「開く」からその○○.txtを読み込む。   ↓ 3.テキストファイルウィザードに従い、   1「カンマやタブなどの区切り文字によって~ 」にチェック   2「区切り文字」→ カンマ、「文字列の引用符」 → "   3「列のデータ形式」 → 文字列 ※090などの数字を、90と先頭の0を消されないように 上記のような手順でCSVファイルを取り込み、編集を終え、 保存する時は   「○○.txtにはテキスト(タブ区切り)と互換性のない機能が含まれている可能性があります。    この形式でブックを保存しますか?」 → このまま保存するため「はい」を選択 これでバッチリOK!…かと思われたのですが、 元の編集前の○○.txt は"名前","ヨミ","電話番号1", …… ""とカンマ区切りであったのが、 編集後の○○.txtは名前 ヨミ 電話番号1  …… タブ区切り(?) となってしまっています。 (CSVファイルとしてはタブ区切りでも問題ないのでしょうが…) どうすれば元のカンマ区切りの形式のまま保存できますでしょうか。 アドバイスよろしくお願い致します。

  • CSVファイルを編集したい。

    目的:CSVファイルを編集したい。 エクセルでインポートしましたが、セルの文字制限を越えている箇所が 多々あり使えませんでした。 そこで、 簡単にCSVファイルを直接編集する(表計算のような一覧で)方法は ありませんか。 また、エクセルに代わるソフトはありませんか。

  • エクセルで編集したCSVファイルを読み込むときに

    よろしくお願い致します。 エクセルで編集したCSVファイルを読み込み、HTMLとして表示するCGIがあります。 エクセルでCSVファイルを編集すると最後の項目の後にカンマ(,)が付かないのですが、 使用しているCGIでは、カンマがないと行が改行されたとみなされません。 行の最後にカンマがなくても行を改行させるには、どのようなコードを追加すればよいのでしょうか? CGIのCSVファイルの読み込みする部分のコードは以下のようになっています。 # ログファイル読み込み my $LOG_FILE = 'log.csv'; my $io = IO::File->new($LOG_FILE, 'r') or die $!; flock($io, 1); while(my $line = $io->getline) { push @ids, (split(/,/, $line))[0]; push @new_checks, (split(/,/, $line))[1]; push @dates, (split(/,/, $line))[2]; push @contents, (split(/,/, $line))[3]; push @contents2, (split(/,/, $line))[4]; push @contents3, (split(/,/, $line))[5]; push @contents4, (split(/,/, $line))[6]; push @contents5, (split(/,/, $line))[7]; push @contents6, (split(/,/, $line))[8]; } 分かりにくい説明で申し訳ありません。 補足説明も致しますので、どうぞよろしくお願い致します。

    • ベストアンサー
    • CGI