• ベストアンサー

文字列置換の方法

<textarea>などで投稿されたテキストの改行文字を<br>に変換したいんですが、どのように書けばいいんでしょうか? UNIX,DOS,MACへの改行コード対応についても教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
回答No.2

string nl2br(string string); そのまんまの関数があるんですけど。。。

参考URL:
http://www.mdbl.sfc.keio.ac.jp/docs/php3/function.nl2br.html
basil
質問者

お礼

どんぴしゃりです。 ありがとうございました。 またちょくちょくお世話になると思うのでよろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

string ereg_replace(string pattern, string replacement, string string); こっちを使って、 $text = ereg_replace("\n", "<br>", $text); これでもおっけ。こっちは正規表現で置換するので汎用です。

参考URL:
http://www.mdbl.sfc.keio.ac.jp/docs/php3/function.ereg-replace.html
basil
質問者

お礼

まだPHPは初心者です。(今日初めて) この方法もこれからたくさん活用することになりそうです。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • makorin
  • ベストアンサー率44% (31/70)
回答No.1

CGIをやっているのか、JavaScriptをやっているのか解りませんが PerlでCGIを組んでいると想定して書きます。 今までやった経験上で書きます。 とゆーか、これで失敗したことはないんですが。 $text =~ s/\n/<BR>/g; これで、$textに含まれる改行コードは全部<BR>に変換されると思います。 sは置換演算子です。 文法的にはs/変換する文字/変換後の文字/ 最後にgが付いているのはその文字列のすべてを検索することになります。 =~で、変換文字列を左、変換演算子を右に置けばOKです。 うっかり=で結んだ場合、変換された回数が格納されます。 改行コードは UNIXがLF、DOSがCRLF、MacがCRです。 CRが\r、LFが\nで表されますが、CGIとして送信したときに自動的にブラウザ側で変換処理しているのではないでしょうか?(確証はないですが) 今まで、こうやって使ってきて、おかしくなったことはないです。 詳しく知りたい場合Perlの本を見るのが一番です。

basil
質問者

お礼

速攻でお答えいただきとてもうれしく思いました。 これからもよろしくお願いします。

basil
質問者

補足

PHPで書いています。 改行コードは「\n」としておけばOSに依存することなく対応できるんですね。なるほど… ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A