• ベストアンサー

文章の改行の取り扱いについて

CGIをPerlで組んでいます。 掲示板を運営しておりまして、利用者がTextareaフォームで文章を入力するのですが、改行がいつの間にか認識されなくなってしまいました。 認識されなくなったというのは、登録の時ではなくて、保存したモノを呼び出す時です。 保存の仕方が悪いのかと思ったりもしますが、 突然そうなってしまったので、理由がよく分かりません。 (1)一般的に、改行のエスケープシーケンスは \n と \r があるかと思うのですが、 それぞれ何が違うのでしょうか? ちなみに掲示板はi-modeとPCと両方に対応しており、 同じ内容をi-modeでもPCでも読めるようになっています。 (2)また、入力された文章をファイルに保存する時の 改行コードの置換は どのような方法がベストなのでしょう? なにか手がかりになるようなコメントでも構いませんのでよろしくお願いいたします。 _

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

  • ベストアンサー
  • freesk
  • ベストアンサー率57% (4/7)
回答No.1

\nはLF(ラインフィード) \rはCR(キャリッジリターン) ラインフィードとかキャリッジリターンというのはタイプライターの名残だとは思いますが、詳しくは知りません で、OSによって改行コードの扱いがちがうんです。 Windows CR LF \r\n Macintosh CR \r UNIX LF \n ですから置換はPerlの置換演算子を使うのが手っ取り早いかと こんな感じに... #WINDOWSの改行コードを<BR>タグに $string=~ s/\r\n/<BR>/g; #Macの改行コードを<BR>タグに $string=~ s/\r/<BR>/g;

u16
質問者

お礼

早速のご回答ありがとうございます。 WIN、MAC、UNIXによって違うんですね。 ってことは 環境変数でOSを特定した上で 置換演算の方法を変えなければいけないのでしょうかね。 ん~~なかなか難儀ですね。 参考になりました。 ありがとうございます。 _

その他の回答 (1)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

下記ページが非常に参考になります。ご一読ください。 ・改行コードを統一する ・改行コードを <BR> に変換する ・改行コードを削除する

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

お礼

大変参考になるページをありがとうございます。 なかなか奥が深いんですね。 勉強させていただきます。 いろいろ試してみて、ご報告します。 ポイントは必ず発行しますので。 _

関連するQ&A

専門家に質問してみよう