こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

textareaの入力データで無駄な改行が…

textareaでデータ入力し、perlで拾うと無駄に改行が入ってしまいます。

<textarea name="textarea_data">
a
a
a
</textarea>

これをPerlで拾って表示させると
a

a

a

と表示されてしまいます。
改行が無駄に一つ入ってしまっているのですが、考えられる原因は何でしょうか?

print "$FORM{'textarea_data'}";

で表示させています。\n等は入れていません。

投稿日時 - 2006-08-23 23:15:33

QNo.2358317

すぐに回答ほしいです

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

入力側の改行コードがCRLFになっているからではないでしょうか。
もしサーバがunix系OSで、改行コードがCRLFのデータをそのままコンソールに出力させると改行2つ分に見えるかもしれません。

参考URLのサイトのように改行コードを統一すると解決するかもしれません。

参考URL:http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify

投稿日時 - 2006-08-24 09:54:08

お礼

ありがとうございます。
お察しの通り、OSはLinuxを使っており、HTML部、CGI部、双方の文字コードををEUCにしたところ、解決しました。
お騒がせしました。

投稿日時 - 2006-08-24 22:17:44

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

改行コードの問題ですね。\r\nになっています。

$FORM{'textarea_data'} =~ s/\r\n|\r/\n/g;

\nに統一したほうがいいでしょう。

投稿日時 - 2006-08-24 10:15:00

お礼

無事、解決いたしました。
ありがとうございました。

投稿日時 - 2006-08-24 22:18:32

ANo.1

連想配列(ハッシュ)%FORMにフォームデータを入れる処理に問題があると思いますがその辺りはどういう処理にしているのでしょうか?

投稿日時 - 2006-08-24 03:13:18

補足

フォームデータの読み込み部はこれですね…。
よろしくお願いします。

#========================#
# フォームデータ読み込み #
#========================#
sub form_read{
if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}
else{
$query = $ENV{'QUERY_STRING'};
}
foreach $pair (split(/&/, $query)) {
($key, $value) = split(/=/, $pair);
# 文字のデコード
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$FORM{$key} = $value;
}
$action=$FORM{'action'};
}

投稿日時 - 2006-08-24 07:45:39

お礼

無事、解決しました。
ありがとうございました。

投稿日時 - 2006-08-24 22:19:03

あなたにオススメの質問