- ベストアンサー
PHPでCSV出力をする方法とは?
- PHPでデータベースから取り出した配列をCSVファイルに出力する方法について調べています。
- 特に、ダブルクォーテーションをつけた形式でCSV出力を行いたいです。
- 既存のサンプルプログラムを利用してCSV出力を行ってみたのですが、ダブルクォーテーションをつける方法がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
質問者さんは何がしたいのでしょうか? 提示されたような文字列を『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で開くと括っているダブルクォーテーションは除去されてセルの値になります。∴ エディタで開いて確認しないと意味がありません。
お礼
ありがとうございます。 参考にしました。
補足
はい。ご指摘のようにすると、 ”””あああ”””,”””いいい”””,”””ううう”””,”””えええ””” このように3つのダブルクォーテーションでくくられてしまいます。 なんとかひとつのダブルクォーテーションで囲われるようにしたいのです。 わかりますか?