-PR-
回答 受付中

ダブルクォーテーションつきでCSV出力したい

  • すぐに回答を!
  • 質問No.9330919
  • 閲覧数51
  • ありがとう数0
  • 気になる数0
  • 回答数2

お礼率 55% (201/365)

今、PHPを勉強しています。
PHPでデータベースからとりだした配列を、CSVファイルに出力するサンプルプログラムをみつけました。
https://blog.supersonico.info/?p=869

このプログラムをそのまま実行すると、
CSVファイルに、
あああ,いいい,ううう,えええ
かかか,ききき,くくく,けけけ
と出力されます。

これを、ダブルクォーテーションつきで、
"あああ","いいい","ううう","えええ"
"かかか","ききき","くくく","けけけ"
と出力するにはどうすればいいのでしょうか?

*****************************************
$csvFileName = '/tmp/' . time() . rand() . '.csv';
$res = fopen($csvFileName, 'w');
if ($res === FALSE) {
throw new Exception('ファイルの書き込みに失敗しました。');
}
$dataList = array(
       //↓ここにダブルクォーテーションで囲ってもうまくいかない。↓
array('あああ','いいい','ううう','えええ'),
array('かかか,'ききき','くくく','けけけ'),
);
foreach($dataList as $dataInfo) {
mb_convert_variables('SJIS', 'UTF-8', $dataInfo);
fputcsv($res, $dataInfo);
}
fclose($res);
通報する
  • 回答数2

回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 44% (1279/2898)

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

お礼率 55% (201/365)

はい。ご指摘のようにすると、
”””あああ”””,”””いいい”””,”””ううう”””,”””えええ”””

このように3つのダブルクォーテーションでくくられてしまいます。
なんとかひとつのダブルクォーテーションで囲われるようにしたいのです。
わかりますか?
投稿日時 - 2017-05-20 11:05:44
  • 回答No.2
レベル14

ベストアンサー率 54% (847/1566)

質問者さんは何がしたいのでしょうか?

提示されたような文字列を『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で開くと括っているダブルクォーテーションは除去されてセルの値になります。∴ エディタで開いて確認しないと意味がありません。
  • 回答数2
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

-PR-

ピックアップ

-PR-
ページ先頭へ