• ベストアンサー

textarea へ、改行させたいテキストデータを書き込むには?

Perlのprint命令では、print '(1)aaaa <BR>(2)bbbb',"\n"; というように、改行させたい箇所に<BR>を挿入すれば改行させられるとおもいます。ところが、print "<textarea> xxx </textarea>" として、CGIで複数行入力領域を書いたときは、xxxのなかに挿入した<BR>はそのまま文字として表示されてしまいます。  改行させるにはどうしたらいいのでしょうか?  どなたか(ひきつづき^^;;)、御教示をいただければ幸いです。

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

  • ベストアンサー
  • imasyu
  • ベストアンサー率36% (19/52)
回答No.2

シングルクォーテーションでは特殊記号をエスケープしてそのまま表示してしまいます。''内では変数も展開されません。 CGIで出力したHTMLのソースを見やすくするために print '(1)aaaa <BR>(2)bbbb',"\n"; と改行記号を入れますよね、このとき \n は""でくくられてますね。 '(1)aaaa <BR>(2)bbbb' と "\n" を切り離しているのはこのためです。 $data=' [前置詞と共に] '."\n".'[unterと共に] '."\n".'unter der Hand ひそかに, こっそり(=unterderhand) '."\n".'etw unter der Hand erhalten <kaufen> …をひそかに入手<購入>する; '."\n".'etw unter den Haenden haben…に従事している;'; としてみるとどうですか?

tonka729
質問者

お礼

$data=~ s/\\n/\n/g; として、<textarea>$data></textarea>で解決しました。 ありがとうございました。

その他の回答 (1)

  • imasyu
  • ベストアンサー率36% (19/52)
回答No.1

<br> は改行タグですがテキストエリアなどではそのまま表示されてしまいます。 改行させたい場所で改行記号 \n を入れればいいです。 AAAA BBBB と表示させるには AAAA\nBBBB としてやります。

tonka729
質問者

お礼

imasyuさま、ご回答ありがとうございました。 問題のテキストデータは,例えば: $data=' [前置詞と共に] \n[unterと共に] \nunter der Hand ひそかに, こっそり(=unterderhand) \netw unter der Hand erhalten <kaufen> …をひそかに入手<購入>する; \netw unter den Haenden haben…に従事している;'; なんですが、これを print >>EOD; 。。。。 <textarea>$data</textarea> EOD と書いてみると、おっしゃるとおりにはいきませんでした。\nはすべてそのまま文字として出てしまいました。 原因はどこにあるのでしょうか?やはり、シングル/ダブルのクオーテーションマークの問題なんでしょうか?済みませんが、ぜひお教え下さい。

関連するQ&A

専門家に質問してみよう