• ベストアンサー
  • すぐに回答を!

文字列置換の方法

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

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数96
  • ありがとう数23

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

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

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • フォームから入力された改行コードをbrにする方法

    掲示板を現在作成していて、投稿者が記入した改行が反映されないので、<textarea>から入力された改行コードを<br>タグに変換しようと思っています。 どなたかご存知の方、教えてください。

    • ベストアンサー
    • PHP
  • Macの改行コード

    Macで作ったテキストデータの改行コードをWindows(DOS)改行コードに変換するソフトってあるんでしょうか?

  • Perlの文字列置換について

    Perlで文字列置換の業務をすることになりした。 Struts1からStruts2のJSPのタグの変換です。 (1)html:textarea property="aaa" styleClass="bbb" (2)s:textarea name="aaa" cssClass="bbb" (1)から(2)に変換したいです。 「html:textarea」が「s:textarea」に対応しており、その属性の「property="aaa"」が「name="aaa"」に対応、 「styleClass="bbb"」が「cssClass="bbb"」に対応するといった内容です。 aaaとbbbは任意の文字列 if ($str =~ /html:textarea/ ) { $str =~ s/html:textarea/s:textarea/; $str =~ s/property=\"(.+)\"/name="$1"/; $str =~ s/styleClass=\(.+)"\"/cssClass/; というように参考書を元に作成してみたのですが、変換は行われるものの、属性のpropertyとstyleClassの順番が逆だったり、ここに記載していない他の属性を間に入れたりすると変換ができません。 どなたか教えて下さい。

    • ベストアンサー
    • Perl

その他の回答 (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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.1
  • makorin
  • ベストアンサー率44% (31/70)

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の本を見るのが一番です。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

質問者からの補足

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

関連するQ&A

  • cgi:textareaでの改行を<br>に

    perlでcgiを作成しています。 <textarea>などで投稿されたテキストの改行文字を<br>に変換するために、 $value =~ s/\r\n/<br>/g; $value =~ s/\r/<br>/g; $value =~ s/\n/<br>/g; のように処理していました。が、<textarea>内で最後に何度もenterを押す人がいて、結果、 hoge<br>hoge<br><br><br><br><br><br><br> のようになってしまいます。 hoge<br>hoge のようにしたいのですが、パターンマッチをあまり勉強していないので、 よくわかりせん。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • textareaの改行の仕方について

    文字変数noteには<br>を含むのですが、 下記のプログラムを実行すると<br>がそのままテキストエリアの中に 表示されます。<br>を\r\nや\nに変換しても、それらがそのまま表示されます。 note変数の<br>の箇所で改行してやるには、<br>をどの文字と置換すればいいのでしょうか? print %Q{<textarea rows="5" cols="100" name="title2">#{note}</textarea>}

  • Javascriptで複数のテキストエリアの文字列を連結させたいです

    Javascriptで複数のテキストエリアの文字列を連結させたいです。 初めまして、 お世話になります。 ------------------------------------------------- <html> <head> <title>無題ドキュメント</title> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body bgcolor="#FFFFFF" text="#000000"> <form name="form1" method="post" action=""> いつ<br> <textarea name="when"></textarea> <br> <br> どこで<br> <textarea name="where"></textarea> <br> <br> だれが<br> <textarea name="who"></textarea> <br> <br> どうした<br> <textarea name="what"></textarea> <br> <input type="submit" name="submit" value="連結"> <input type="reset" name="submit" value="リセット"> <br> <br> いつどこでだれががどうした。<br> <textarea name="textfield"></textarea> </form> </body> </html> ------------------------------------------------- というHTMLがあったとして ボタンを押したら文字列を連結させたいのです。 その際、入力したテキストフィールドで文字列が改行をされてあった場合 それをそのまま反映して表示させたいのです。 ぜひよろしくお願いします。

  • perlでの改行コードの置換

    perlで改行コードを置換したいのですが・・・ もとのファイルはS-JISコードでその中身をEUC(UNIXで使用するために)に変換します。ここまではOKなのですが、改行コードがうまく行きません。 改行コードをUNIXで使うためにLFだけにしようと思い、 $line =~ s/\r\n/\n/g; (これは\r\nで引っかからない) とか $line =~ s/\n/\x0A/g; とかにしてみたのですがうまく行きません。 どのようにすればよろしいでしょうか?

    • ベストアンサー
    • Perl
  • CGIで改行タグを改行コードに変換ってできますか?

    CGIで改行タグを改行コードに変換ってできますか? $text =~ s/\r\n/<br>/g; $text =~ s/\r/<br>/g; $text =~ s/\n/<br>/g; で確認画面上で表示されるtextareaの文章は改行されるのですが、 届いたメールには<br>と表示されてしまって困ってます。 PHPでは変換できるみたいなのですが、perlでも出来るのでしょうか?

    • ベストアンサー
    • CGI
  • textarea と、 input type の質問。

    <textarea>なにがし</textarea> これは、ユーザに入力を促す際、 あらかじめ表示させておく文字ですが、 <textarea>なにがし<BR><BR>それぞれ</textarea> こんな風に、 表示させたい内容を何行か改行した文章を置きたいのですが、 全て繋がってしまいます。 専用の改行コードはあるのでしょうか? また、<input type="text">で、 ユーザの入力開始時の文字を、半角英数に固定して 誤入力を避けたいのですが、 なにかオプションがあるのでしょうか?

  • <br>タグを改行に変えたい

    掲示板を作っています。 テキストファイルに書き込んである文字列ですが、改行は<BR>に変換して保存します。 編集で呼び出すときに、<BR>をもとの改行コードに戻す作業を試みています。 $message =~ s/<br>/\n/ig; とやるとテキストエリアがすべて空白です。 $message =~ s/<br/\n/ig; と>をなくすと改行されてテキストエリアに表示されます。 ただ、データには>が残ったまま表示されます。 この対処法を教えてください。

    • ベストアンサー
    • Perl
  • textareaで改行させたい

    textareaにあらかじめ文字列を表示させたいと思っています。表示させる文字列は配列に入れていて、配列には aaa bbb ccc のように改行コードが入っているのですが、下記のようにすると、 <textarea name="name1" id="id1" cols="65" rows="15" wrap="soft"><%=Arr(1,6)%></textarea> aaa<br>bbb<br>ccc<br> と表示されます。 テーブルに表示させると問題なく改行されて表示されるのですが、textareaだと、上記のようになってしまいます。 どのようにすればよいかご教示ください。

  • EUCやShift JIS, DOSの改行コードの削除など

    MacOSXで使用可能な漢字コード変換(EUC, Shift JIS)およびDOS,unixの改行コード変換のソフトを探しています。 コマンドでなく、GUIで使用できるわかりやすいソフトは ありますでしょうか?

    • ベストアンサー
    • Mac
  • ボタンをクリックして文字を置換する

    <textarea name="areaA" rows="4" cols="40"></textarea><br> <input type="button" onclick="..."> <textarea name="areaB" rows="4" cols="40"></textarea><br> という風な2つのテキストエリアとボタンを使い、 テキストエリアに文字を書いてもらい、 ボタンを押すと任意の行を置換したいです。 たとえば ------------------ #あああああ いいいいい #ううううう えええええ ------------------ というものを、ボタンを押すと先頭に#がついた行だけ置換して ------------------ <部品1>あああああ<部品2> いいいいい <部品1>ううううう<部品2> えええええ ------------------ という風なscriptを組みたいのですが、正規表現等が苦手でまったくうまくいきません。 ご教授いただけないでしょうか?