• ベストアンサー

TEXTAREAの改行をデータへ反映

よろしくお願いします。 フォーム上で入力した値をCSVに反映させるようなものを作っているのですが、TEXTAREAで改行した値がCSVデータ上で改行されなくて困っています。 <TABLE>  ・  ・  ・ <TR> <TD>コメント:</TD> <TD><TEXTAREA NAME="COMMENT" rows="2" cols="40"></TEXTAREA></TD> </TR> </TABLE> 入力した値: ---------- あああ※ いいい※ ううう        ※位置で改行 ---------- CSVデータ内: ~,あああいいいううう webサーバー・・・HP-UX web・・・IE 開発端末・・・windows2000(Tera Term 使用) 以上。よろしくお願いいたします。

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

  • ベストアンサー
  • EUR
  • ベストアンサー率61% (29/47)
回答No.6

テキストエリアから取得したデータが、改行を入れているのに改行コードを含まないというのは聞いたことがありませんので、CSVを保存する際、Perlで改行コードを取り除いている可能性が考えられます。 PerlでCSVを保存する際に、 tr/\x0D\x0A//d; のように改行コードを取り除いていないか確認をお願いいたします。 もし、取り除いているようでしたら、取り除く処理の変わりに改行コードを\nに変換する処理に変更してください。 変換の処理ですが、 s/\x0D\x0A|\x0D|\x0A/\n/g; となります。 次にテーブルのセルにCSVのデータを出力する場合ですが、テーブルのセル内で改行を行うための改行コードは<br>となります。 保存したCSVファイルからデータを取得した際、改行コードが上記で変換した\nになっているはずですので、 今度は\nを<br>に変換する処理が必要になります。 この処理は s/\n/<BR>/g; になります。 処理の流れは以下のようになるはずです (1)<TEXTAREA>に値を入力 ----------  あああ※  いいい※  ううう        ※位置で改行 ---------- ---以下サーバー側の処理--- (2)フォームのデータの取得  ~,あああ<改行コード(OS依存)>いいい<改行コード(OS依存)>ううう (3)OSに依存しない改行コードへの変換 s/\x0D\x0A|\x0D|\x0A/\n/g;  ~,あああ\nいいい\nううう (4)CSVの保存 (5)CSVの読み込み (6)テーブルのセル対応の改行コードへ変換 s/\n/<BR>/g;  ~,あああ<br>いいい<br>ううう (7)<TABLE>に値のはめ込み +-------------+ |あああ<br>いいい<br>ううう| +-------------+ ---以下クライアント側の処理--- (8)<TABLE>の表示 +---+ |あああ| |いいい| |ううう| +---+

kal1119
質問者

お礼

返信が遅くなってすみません。 フォームの値を取得する際に改行を削除しておりました。 --------------------  ・  ・  ・ $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; $value =~ s/\n//g; $value =~ s/\r//g; $value =~ s/\t/ /g; $value =~ s/\,/ /g; $FORM{$name} = $value; -------------------- この改行の欄を/<br>/に変更しました。 どうもお世話になり、ありがとうございました。

その他の回答 (5)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#2>結果をweb上で表示(TABLE表示)した時に改行されると思っていたのですが違うのでしょうか? #3>書き込み内容一覧を表形式で表示(TABLE)させています。 WEB上で改行させるには、 \nを<br>に置き換える必要があります。 勘違いコメントだったらすみません

  • EUR
  • ベストアンサー率61% (29/47)
回答No.4

すみません、読解力不足です。 補足をお願いいたします。 処理の流れですが、 ---データライト処理--- 1.テキストエリアのデータ取得 2.CSV形式に変換(CSVの改行コードに直す) 3.CSVファイルを保存 ---データリード処理--- 4.CSVデータの読み込み 5.テーブルに入れ込み(HTMLの改行コードに直す) であっていますか? 問題がある点は、 1.上記2で変換したCSVファイルを見ると、うまく改行がされていない(CSVファイルがまずい) 2.上記5でテーブルに入れ込んだ際、うまく改行が出来ていない(CSVファイルはOKだが、出力されるHTMLがまずい) のどちらでしょう? 1.のCSVがうまくいっていない場合は、Perlと言うことなので、 s/\x0D\x0A|\x0D|\x0A/\n/g; で改行コードを\nにしてください。 2.のHTMLファイルがうまくいっていない場合は、CSVを一行ずつ読み出して、カンマでトークンに区切り、1つずつトークンデータをテーブルへ格納します

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#CSV2Values
kal1119
質問者

補足

補足いたします。 まず、上記の補足という事で、CSVの問題を抱えております。 (1)<TEXTAREA>に値を入力 ----------  あああ※  いいい※  ううう        ※位置で改行 ---------- (2)書き込まれたCSVの中身  ~,あああいいいううう (3)<TABLE> +--------+ |あああいいいううう| +--------+ というのが現状です。 これを、 (2)書き込まれたCSVの中身  ~,あああ<改行コード>いいい<改行コード>ううう (3)<TABLE> +---+ |あああ| |いいい| |ううう | +---+ となれば問題解決なのですが・・・ テキストエリアボックス内で<Enter>を押し改行させ、 CSVに書き込みを行うと何らかの改行コードが挿入されると認識していたのですが、それがそもそもの誤りなのでしょうか? 以上、よろしくお願いいたします。

  • EUR
  • ベストアンサー率61% (29/47)
回答No.3

改行コードは UNIX … 10 マイクロソフト-IBM 系 OS … 13,10 Macintosh … 13 となっています。 サーバでCSVファイルを作成する際、テキストエリアの文字列を取得し、1文字ずつ解析を行います。 上記コードを発見したら"\\n"等に変換してやる作業が必要になります。 あああ いいい ううう でしたら、サーバで取得できる文字列は あああ(改行コード)いいい(改行コード)ううう となっています。 CSVファイルを作る際は、 あああ\\nいいい\\nううう と変換します。

kal1119
質問者

補足

ご回答ありがとうございます。 少し細くさせていただきます。 実際フォームによりテキスト取得(TAXTAREA)後、CGIによりCSVへの書き込(Perl:open)み、書き込み内容一覧を表形式で表示(TABLE)させています。 最終的な一覧表示のところで改行されてほしい(1つのレコード行に2行とか3行とか・・・)のですが、 単純にCSVデータ内で  あああ\\nいいい\\nううう と記述しても意味ないですよねぇ。。。 具体的にどうすればよいのでしょうか? もう少し詳しく教えていただけないでしょうか。 よろしくお願いいたします。

  • atyan
  • ベストアンサー率10% (4/39)
回答No.2

csvファイルは 1行、カンマ区切りごとにデータを持ちます コメント欄に改行をいれてcsvに改行させてることは可能ですが、その仕様はおかしくないですか? webサーバアプリケーション名と使用言語はなんですか?

kal1119
質問者

補足

CGI開発言語はPerlです。 > webサーバアプリケーション名 申し訳ありません、これは何を指しているのでしょうか? データ内に改行コードを持たせてあげればその結果をweb上で表示(TABLE表示)した時に改行されると思っていたのですが違うのでしょうか? 仕様がおかしいという点、もう少し詳しく教えていただけないでしょうか? よろしくお願いいたします。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

CSVにはどのように書き出しているのですか?

kal1119
質問者

補足

CGI(Perl)により open(OUT,">>$file") で標準CSV(カンマ区切り)に書き出しています。 以上、よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう