- ベストアンサー
文章の改行の取り扱いについて
CGIをPerlで組んでいます。 掲示板を運営しておりまして、利用者がTextareaフォームで文章を入力するのですが、改行がいつの間にか認識されなくなってしまいました。 認識されなくなったというのは、登録の時ではなくて、保存したモノを呼び出す時です。 保存の仕方が悪いのかと思ったりもしますが、 突然そうなってしまったので、理由がよく分かりません。 (1)一般的に、改行のエスケープシーケンスは \n と \r があるかと思うのですが、 それぞれ何が違うのでしょうか? ちなみに掲示板はi-modeとPCと両方に対応しており、 同じ内容をi-modeでもPCでも読めるようになっています。 (2)また、入力された文章をファイルに保存する時の 改行コードの置換は どのような方法がベストなのでしょう? なにか手がかりになるようなコメントでも構いませんのでよろしくお願いいたします。 _
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
\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;
その他の回答 (1)
- leaz024
- ベストアンサー率75% (398/526)
下記ページが非常に参考になります。ご一読ください。 ・改行コードを統一する ・改行コードを <BR> に変換する ・改行コードを削除する
お礼
大変参考になるページをありがとうございます。 なかなか奥が深いんですね。 勉強させていただきます。 いろいろ試してみて、ご報告します。 ポイントは必ず発行しますので。 _
お礼
早速のご回答ありがとうございます。 WIN、MAC、UNIXによって違うんですね。 ってことは 環境変数でOSを特定した上で 置換演算の方法を変えなければいけないのでしょうかね。 ん~~なかなか難儀ですね。 参考になりました。 ありがとうございます。 _