CGI-BBS > 基礎 > 改行コード > 途中に改行のあるデータをcsvなどで取り出す方法


カレッヂ
カレッヂ


質問者 Octo  投稿日 2/27(火) 15:22:34
フォームの中にメモ欄を設けたのですが、この欄にいれる文章の途中に改行を入れると、データファイルがその位置で改行されてしまい、そこから後ろがファイル内では次の行に移ってしまいます。
データファイルに書き込みをする段階で改行コードになんらかの処置をほどこさなければならないのだろうと思うのですが、どのようにすればよろしいでしょうか。
回答者 しあわせのツボ  [削除]  投稿日 2/27(火) 16:34:17
よく使われる方法をいくつか。
○\rに変換することで、スクリプトに改行と認識されないようにする(ブラウザは\rも改行と認識する)。
○<br>タグに変換する。CGIとして使うなら最もお手軽。
○1レコードが複数行になっていても認識できるようなスクリプトにする。
質問者 Octo  [削除]  投稿日 2/28(水) 16:12:06
しあわせのつぼ様:
ありがとうございます。やはり改行コードの変換が必要なのですね。
ところで、入力データ内の改行はどのような改行コードであらわされているのでしょうか?(これもやっぱり\nなんですか?)
回答者 しあわせのツボ  [削除]  投稿日 2/28(水) 17:36:47
入力したマシンのOSにより異なります。
Mac>\r
Win類>\r\n
UNIX系>\n

たとえば、\rに統一するなら
s/\r?\n/\r/g;
という1行、<br>に変換するなら
s/\r\n/<br>/g;
s/\r|\n/<br>/g;
という2行になります。
質問者 Octo  [削除]  投稿日 3/1(木) 19:55:29
毎度ありがとうございます。
ところで<br>にした場合、ブラウザ上では改行されるのでしょうが、データファイルの中ではどのようになりますか?
メールフォームから配信されてきたメールの文面がちゃんと改行されるようにしたいのですが・・・
回答者 羊相談員  [削除]  投稿日 3/1(木) 22:13:03
ブラウザでは言うまでもなく改行されます。
(もちろんソースでは改行されません)

メールの場合は相手が
HTML形式のメールを読めるかどうかで変わってくるかと思います。
回答者 しあわせのツボ  [削除]  投稿日 3/1(木) 22:42:39
データには<br>で記録しておき、メール送信時に\nに戻せばよいでしょう。
質問者 Octo  [削除]  投稿日 3/3(土) 11:44:27
色々ありがとうございました。
試してみる事にします。

このページは終了したので返信(回答)は書きこめません

Web裏技