• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ダブルクォーテーションつきでCSV出力したい)

PHPでCSV出力をする方法とは?

このQ&Aのポイント
  • PHPでデータベースから取り出した配列をCSVファイルに出力する方法について調べています。
  • 特に、ダブルクォーテーションをつけた形式でCSV出力を行いたいです。
  • 既存のサンプルプログラムを利用してCSV出力を行ってみたのですが、ダブルクォーテーションをつける方法がわかりません。

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

  • ベストアンサー
  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.1

>//↓ここにダブルクォーテーションで囲ってもうまくいかない。↓ という意味は? 質問では 'あああ' とシングルクォーテーションで囲っただけですが、 添付画像のようにダブルクォーテーションで囲ってもうまくいかない、という意味なのでしょうか? array('"あああ"','"いいい"','"ううう"','"えええ"'),

hide_momiji
質問者

補足

はい。ご指摘のようにすると、 ”””あああ”””,”””いいい”””,”””ううう”””,”””えええ””” このように3つのダブルクォーテーションでくくられてしまいます。 なんとかひとつのダブルクォーテーションで囲われるようにしたいのです。 わかりますか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

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

質問者さんは何がしたいのでしょうか? 提示されたような文字列を『CSVファイルに出力する』だけであれば、ダブルクォーテーションで括る必要はありません。ダブルクォーテーションで括らないといけないケースでは、fputcsvが自動的にダブルクォーテーションで括って出力します。この処理を自前でやらなくていいのがfputcsvの便利なところです(正しいCSV出力ってけっこう面倒なんですよ・・・)。 (例) <?php $res = fopen('test.csv', 'w'); $dataList = array( array('あああ', 'いいい', 'ううう', 'えええ'), array('かかか', 'き,き,き', 'く く く', 'け"け"け'), array('"さささ"', '"ししし"', '"すすす"', '"せせせ"'), ); foreach($dataList as $dataInfo) { mb_convert_variables('SJIS', 'UTF-8', $dataInfo); fputcsv($res, $dataInfo); } fclose($res); とすれば、出力結果は あああ,いいい,ううう,えええ かかか,"き,き,き","く く く","け""け""け" """さささ""","""ししし""","""すすす""","""せせせ""" となります。空白やカンマやダブルクォーテーションや改行コードを含んで要れば自動的にダブルクォーテーションで括られますし、文字列中のダブルクォーテーションはエスケープのために "" と2重になるのが「正しいCSV」です。 ちょっと思ったのですが、まさかCSVファイルをMS-Excelで開いて確認していたりはしませんよね?MS-Excelで開くと括っているダブルクォーテーションは除去されてセルの値になります。∴ エディタで開いて確認しないと意味がありません。

hide_momiji
質問者

お礼

ありがとうございます。 参考にしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CSV出力のダブルクォーテーションについて

    ウェブアプリからCSV出力を行いたいのですが 出力行の両端に「"」(ダブルクォーテーション)が一緒に出力されます。 このダブルクォーテーションを出力したくありません。どうすればいいでしょうか?ご教授お願いします。 ちなみに下記は自分で作った例です。また使用するクラスはCSV::Writer以外でもかまいません。 class hoge  def exprt   cntnt_type = "text/csv"   ##ファイル名称の設定   file_name = "hoge.csv"   ##CSVオブジェクトを生成し、データをセットしていく   CSV::Writer.generate(output = "") do |csv|     csv << ["hoge", "fuga"]   end   ##CSVファイルの出力   send_data(output, :type => cntnt_type, :filename => file_name) end

  • CSVへの書込み

    はじめまして。 サーバー初心者でおかしな質問をしてしまっているかもしれませんが、どうかお付き合いくださいませ。 サーバー:fedora11 PHPでCSVファイルに書込みを行ったのですが、ダブルクォーテーション(")を表記したくて以下のようにしました。 ・PHP fputcsv( $data, Array('"犬"','300')); と表記したら ・CSV """犬""",300 と表記されてしまいます。 ・CSV "犬",300 というように表記するにはどうしたらよいかご存知の方いらっしゃったらお手数ですがご指導を御願いいたします。

    • 締切済み
    • PHP
  • fputcsvで保存せず、そのまま出力したい

    mysql_fetch_arrayで得た連想配列をCSV形式で出力するようなプログラムを考えました。 $urs = array(); mysql_select_db( $dbName, $link ); $res = array(); $text=""; $temp = mysql_query( "SELECT * FROM nes ", $link ); while( $urs = mysql_fetch_array($temp , MYSQL_ASSOC) ){ $res[]=$urs; } fputcsv($text , $res); print($text); しかしfputcsvは配列をファイルにCSV形式で出力するプログラムなので、上ではエラーが出てうまくいきません。 本来ファイルに書き込むはずのテキストを、そのまま出力することができる良い方法があれば教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • CSVのダブルコーテーションを取りたい

    CSVファイルをDBに更新をかけたくてフィールドに分解したのですが、フィールドの中身を見るとダブルコーテーションで囲まれていました。 "123" "ABCD" このダブルコーテーションをとりたいのですがやり方がわかりません。 StrCnvFrom = ObjTS.ReadLine StrCnvTo = Replace(StrCnvFrom, """, "") Replaceを使って変えようとしましたが、エラーが出てできませんでした。 よろしくお願いします。

  • EXCEL→CSV保存時のダブルクォーテーションについて

    下記のようにEXCELマクロにてEXCELファイルをCSVファイルに保存しようとしています。 NewBook.SaveAs Filename:="test.csv", FileFormat:=xlCSV, CreateBackup:=False このとき、セル値にダブルクォーテーションが含まれていると、出力CSVファイルの値がダブルクォーテーションで囲まれてしまいます。 ●ダブルクォーテーションが含まれていない場合 セル値→A列:ABC     B列:DEF CSVファイル→ABC,DEF ●ダブルクォーテーションが含まれている場合 セル値→A列:A"C     B列:DEF CSVファイル→"A"C",DEF 後者の場合もダブルクォーテーションで囲まれないようにするにはどうすればよいでしょうか。

  • ダブルコーテーション付きでCSV出力

    ACCESSでcsvを出力するように作りたいと思っています。 フォームで画面を設けボタンを押すとテーブルのデータをcsvとして出す仕組みです。 ボタン押下で以下のメソッドがよばれてcsvが出力されるようにしました。 DoCmd.TransferText acExportDelim, "Q_基本情報 エクスポート定義", "Q_基本情報CSV", scsvfileNm, True csvは出力されたのですが、テーブルカラムがnullの場合、以下のように出力されてしまいます。 ^^^^部分が"(ダブルコーテーション)が付きません。 "2",,"会社",,,,"0" ^^^^ ^^^^^^ 以下のようにnullでも""が付いて出されるようにしたいのですが、 TransferTextメソッドでは無理なのでしょうか "2","","会社","","","","0" どなたか詳しい方教えてください。お願い致します OS、アクセスのバージョンは以下のようになっています。 OS:windowsXP ACCESS2003

  • ダブルクォーテーションが置換できません

    いつもお世話になっております。 PHP初心者です。 シングルクォーテーションとダブルクォーテーションを文字列として入力したいと思い、以下のように記述しました。 -------------------------------------------------- $naiyo = $_POST['naiyo']; $search = array('\'','"'); $replace = array('\'\'','\"'); $naiyo2 = str_replace($search,$replace,$naiyo); -------------------------------------------------- シングルクォーテーションは置換された(文字列として表示された)のですが、ダブルクォーテーションは表示されず、ダブルクォーテーション以下の文字列が消えてしまいます。 置換ができていないというよりも、そもそもダブルクォーテーションが検索に引っかかってもいないようです。 どのようにすればダブルクォーテーションも置換できるか、お分かりの方がいらっしゃいましたらご教示ください。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • CSVファイルからダブルクォーテーションを削除したい。VBS使用で。

    CSVファイルからダブルクォーテーションを削除したい。VBS使用で。 CSVファイルのダブルクォーテーションを外す方法が Wendy02さん回答の http://oshiete1.goo.ne.jp/qa3016163.html (タブ区切りデータからダブルコーテーションを外したい) を使用してみました。 〔使用前〕 "1","00030123","00000000000000000000","00000000000000000019","4220120","42201","","1" 〔使用後〕 1,00030123,00000000000000000000,00000000000000000019,4220120,42101,",1" 使用後、ダブルクォーテーションで囲まれていない項目があると、 ダブルクォーテーションが残ってしまいます。 .Pattern ="""([^""]+)""" の部分を変更すれば、良いと思うのですが教えていただけないでしょうか?

  • EXCELにてダブルコーテーションの区切りを用いて保存したい。

    DB作成のアルバイトをしているものです。 CSVファイルを保存するときに、ダブルコーテーションで保存されずに困っています。 もともとダブルコーテーションで区切られたCSVファイルなのですが、保存するとダブルコーテーションが消えてしまいます。 どうしたらよいのでしょうか? 教えていただければと思います。 よろしくお願いします。

  • csvに中身が書き込まれない

    作成してみたものがうまく動かず、どこがおかしいのかよく分からないため、 質問させていただきます。 もともとtest.csvにはUTF-8で作成した中身があります。 ひとつ前の画面でPOST送信しているフォームがあり、 中身のデータは下記です。 <form action="kakikomi.php" method="post"> <input type="hidden" name="aaa" value="bbb,ccc,ddd"> </form> #kakikomi.php(UTF-8) $csvFileName="test.csv";$csv=array(); foreach($_POST as $val){$csv[]=explode(",",$val);} setlocale(LC_ALL,"ja_JP.UTF-8"); if( $pointer=fopen($csvFileName,"w")): foreach($csv as $line){fputcsv($pointer,$line);} fclose($pointer); //print_r($csv); else:die('メッセージ'); endif; この結果はcsvの中身は真っ白になってしまいます。 fputcsvのマニュアル例からそのまま引用したのですがどこかおかしいのでしょうか。

    • 締切済み
    • PHP
このQ&Aのポイント
  • 新たに購入したスマートフォン用三脚のシャッターボタンの開け方について、右回しで開けるのか左回しで開けるのか分からない状況です。
  • シャッターボタンの開け方が分からず、壊してしまう可能性があるため不安です。
  • 購入したエレコム株式会社の製品で、シャッターボタンを開ける方法について教えてください。
回答を見る

専門家に質問してみよう