アプリ版:「スタンプのみでお礼する」機能のリリースについて

CGIをPerlで組んでいます。

掲示板を運営しておりまして、利用者がTextareaフォームで文章を入力するのですが、改行がいつの間にか認識されなくなってしまいました。

認識されなくなったというのは、登録の時ではなくて、保存したモノを呼び出す時です。


保存の仕方が悪いのかと思ったりもしますが、
突然そうなってしまったので、理由がよく分かりません。

(1)一般的に、改行のエスケープシーケンスは \n と \r があるかと思うのですが、
それぞれ何が違うのでしょうか?

ちなみに掲示板はi-modeとPCと両方に対応しており、
同じ内容をi-modeでもPCでも読めるようになっています。

(2)また、入力された文章をファイルに保存する時の 改行コードの置換は どのような方法がベストなのでしょう?



なにか手がかりになるようなコメントでも構いませんのでよろしくお願いいたします。




_

A 回答 (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;
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

WIN、MAC、UNIXによって違うんですね。


ってことは 環境変数でOSを特定した上で
置換演算の方法を変えなければいけないのでしょうかね。

ん~~なかなか難儀ですね。


参考になりました。
ありがとうございます。

_

お礼日時:2001/08/08 21:23

下記ページが非常に参考になります。

ご一読ください。

・改行コードを統一する
・改行コードを <BR> に変換する
・改行コードを削除する

参考URL:http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify
    • good
    • 0
この回答へのお礼

大変参考になるページをありがとうございます。

なかなか奥が深いんですね。

勉強させていただきます。

いろいろ試してみて、ご報告します。

ポイントは必ず発行しますので。

_

お礼日時:2001/08/08 21:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!