人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

textareaの内容を、改行も含めてひとつのセルにCSV出力させる問題です。

過去にWEB上で類似の質問がありますが、その方が言われているとおり、
TEXTAREAの内容には改行コードが含まれており、CSVは改行がレコードの
区切りとなっているため、何らかの対応が必要です。

現在、ひとつのセル内に出力するために、以下のようにしています。
$str = ereg_replace("\,|\r|\n","",$str);
改行、カンマをすべて置換で消しています。


○類似質問
http://ml.php.gr.jp/pipermail/php-users/2001-October/003142.html

●質問者: ikazuo
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CSV STR Web ひとつ コード
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kn1967
●60ポイント

改行、カンマをすべて置換で消すというのも一つの対策ではあるのですが・・・。


【1】ダブルクォーテーションの利用

メモ帳などで下記のように改行入りのcsvファイルを作って、

Excelなどで読み込んでみてください。

"1
2
3",1
2,"あ
い
う"

上記確認していただければ理解いただけると思うのですが、

ダブルクォーテーションで囲めば改行を含んでいても1つの塊として扱われます。


【2】各アプリケーションに向けた対応

メモ帳+Excelで確認いただければ気づかれるかもしれないのですが、

1・
2・
3

のように表示される事と思います。

これは、Excelのセル内改行はLFのみなのに対して、

メモ帳で保存した際の改行がCR+LFになっているためです。

Excelは一例ですが、ご利用になるアプリケーションにあわせて、

CR+LFをLFに置換する処理などは必要になります。


【3】具体的な流れ

半角のダブルクォーテーションが混ざっていると、データが途切れたり、

複数のデータが1つになってしまったりするので、全角に置換してから、

半角で囲むという必要性があり、下記のようなステップになります。

(1)半角ダブルクォーテーションを全角に置換

(2)CR+LFをLFに置換 ←Excelのように必要であれば行う。

(3)全体を半角ダブルクォーテーションで括る


【4】備考

話はそれますのでここでは述べませんが、

HTMLタブの除去やSQLインジェクションなどへの対応も適宜行う必要があるかもしれません。

◎質問者からの返答

> 【3】具体的な流れ

>

> (1)半角ダブルクォーテーションを全角に置換

以下のようにして置換できました。

$str = ereg_replace("\"","”",$str);


> (2)CR+LFをLFに置換 ←Excelのように必要であれば行う。

カンマとCR(\r)+LF(\n)をLF(\n)に置換する処理です。

これで問題なく出力されました。(...たぶん)

$str = ereg_replace("\,|\r\n","\n",$str);

> (3)全体を半角ダブルクォーテーションで括る

こちらは力不足で見当もつきません...

ご教示いただけないでしょうか。

よろしくお願いいたします。

http://ml.php.gr.jp/pipermail/php-users/2001-October/003158.html
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ