• ベストアンサー

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

alfeimの回答

  • ベストアンサー
  • alfeim
  • ベストアンサー率58% (114/195)
回答No.1

まんまずばりな関数、nl2br()という関数があります 使い方は以下のような感じに・・・ # $beforeはtextareaタグで入力されたデータ。 # $afterはbrタグが$beforeデータに挿入される $after = nl2br($before);

参考URL:
http://www.php.net/manual/ja/function.nl2br.php
Ants
質問者

お礼

ありがとうございます。 こんな便利な関数があったのですね。

関連するQ&A

  • 改行コードの<BR>への変換がうまくいきません。

    はじめまして よろしくお願いします。 仕事でPHPを触れはじめたところです。 textarea タグで入力されたものをMysqlに保管し、 また表示するというようなものを作ろうとしています。 困っているのは Mysqlがどうのではなくその登録前に 改行コードを <br>タグ に変換をかけておこうというところで躓いています。 セッションを開始しておいてFormタグからの値を 次のページで受け取っています。 ここの過去ログ等を参考にしてみたのですが... $_SESSION['e_biko'] = htmlspecialchars($_POST['biko'] , ENT_QUOTES) ; $tmp_biko = ""; $tmp_biko = str_replace("\r\n", "\r", $_SESSION['e_biko']); $tmp_biko = str_replace("\r", "\n", $tmp_biko); $_SESSION['e_biko'] = str_replace("\n", "<br>", $tmp_biko); このあとでechoを使って$_SESSION['e_biko'] を表示させています。 しかし改行しないんです。<BR>タグへの変換ができておらず、表示されたHTMLのソースコードを見ると改行コードがそのまま出力されています。 HTML及びPHPの文字コードはEUCで記述しています。 開発及び確認はWindows・IE6で行っています。 何か考えられる原因、あるいはバグかあるでしょうか? ちなみに下記でも駄目でした。 $_SESSION['e_biko'] = preg_replace("/\r\n|\r|\n/", "<br>", $_SESSION['e_biko']); お分かりになられる方おられましたらよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • フォームのtextareaにnl2brを使用すると、入力内容の改行部分に<br />が表示されてしまう。

    現在、フォームを作成しています。 セッションを利用してフォームの次のファイルにデータを受け渡しています。 問題は、フォームのtextareaにnl2brを使用すると、出力画面のtextareaに入力された内容において改行がある部分に<br />タグが表示されてしまうことです。 フォームの流れ: start.phpにおいてフォームに入力及び、入力エラーがある場合、入力内容訂正の表示。 mail.phpにおいて入力内容の確認及びデータ送信。 start.phpのtextarea以下: <textarea name="test"><?php echo nl2br(htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8')) ?></textarea> 解説:start.phpでは、フォームの入力項目のいずれかに入力エラーがあるとその項目の入力内容の訂正を促し、入力されたデータをもう一度表示します。(<textarea name="test">に入力されたデータをもう一度<textarea name="test">に表示します。) mail.phpにおいてstart.phpのtextareaに入力されたデータを表示する部分は以下: <?php echo nl2br(htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8')) ?> start.phpにおいて入力項目のいずれかにエラーがあり、<textarea name="test">に入力されたデータをもう一度<textarea name="test">に表示した場合も、また、mail.phpにおいてstart.phpのtextareaに入力されたデータを表示した場合も、<textarea name="test">内の文字列に改行があるとその部分に<br />が表示されてしまいます。 入力例: あいうえおかきくけこ たちつてと 表示例(nl2br使用): あいうえおかきくけこ<br /> たちつてと 解説:nl2brを使用した場合、<br />は挿入されてしまいますが、予定の場所で改行されて表示されます。 試しにnl2br()をコードから削除すると、以下のような表示となります。 表示例(nl2br未使用): あいうえおかきくけこたちつてと 解説:nl2brを使用しない場合、改行されません。 どのようにすれば、textareaに入力された内容の改行部分が改行だけされ<br />が表示されないようにできるでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • フォームのインプットフィールド内の改行について

    HTML、ASP、Accessを使い、掲示板を作成しています。 インプットフォームで得たデータをAccessのdbに書き込みます。 すでに書き込まれた内容を掲示板に表示する際に、入力されたときの改行も反映させたいのですがうまくいきません。書き込みページに<br>タグを入れてもらうと表示上で改行できますが。設定上で同じような結果を出したいのですが、いい方法ありますか? お願い致します。 (この入力フィールドはまさに改行が反映されてますが、この質問書き込みページのようにしたいのです・・・)

  • CGIで改行タグを改行コードに変換ってできますか?

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

    • ベストアンサー
    • CGI
  • 入力テキスト内で改行コードが表示されてしまいます。

    現在phpで掲示板を作成しております。 返信画面でデータベースに保存している過去データを 返信用のテキストボックスで表示しているのですが、 例) ・コード <TEXTAREA NAME=body COLS=50 ROWS=8 wrap="soft"><? print $body ?></TEXTAREA> ・ブラウザ上 掲示板です<BR>テスト という風に表示されてしまいます。 改行が実行されないのはなぜでしょうか?

    • 締切済み
    • PHP
  • TEXTAREAの改行がうまくいきません。

    自作で掲示版を作成している、初心者です。現在作成中の掲示版にTEXTAREAに入力し、LOG上では1行目<BR>2行目といった形で改行をBRに置き換えて保存していますが、その修正としてLOGからデータをとり改行状態で表示させたいのですが、 うまく改行されない状態です。下記にLOGより読み込み。タグを\rに置き換えて いますが、TEXTAREAに表示されなく、改行表示どころではありません。 いったいどうすればよいのでしょうか?ご教示をお願いします。 <CGI文> $wkaaa1 = $IXUSERINF{Enaiyo}; データを取得 $wkaaa =~ &notag1($wkaaa1);  変換(これがおかしい?) $mesbuff .= "<TR><TD nowrap ><TEXTAREA ROW=\"10\" COLS=\"48\" NAME=\"Enaiyo\" WRAP=\"soft\">$wkaaa </TEXTAREA></TD></TR>"; <sub> sub notag1 { local($_) = @_; s/&/&amp;/g; s/"/&quot;/g; s/</&lt;/g; s/>/&gt;/g; s/&lt;br&gt;/\n/gi (これで <BR>を\n(改行)にしてるつもり return $_; }

    • ベストアンサー
    • CGI
  • 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
  • エクセルで「改行コード」を「改行コードと<br>」に置換する方法を教えてください。

    エクセルで「改行コード」を「改行コードと<br>」に 置換する方法を教えてください。 たとえば… あああああ あああああ あああああ と言う文章があります。 あああああ<br> あああああ<br> あああああ<br> と置換したいのです。 なにか関数を使うのでしょうか。 当方、エクセルの勉強を始めた初心者です。 HTML、CSSなら手打ちでホームページ作成出来るレベルです。 できれば、マクロと言うのでしょうか。 同じ作業をボタンを押すだけで、繰り返し使えるようにしたいです。 よろしくお願いいたします。

  • 表(<table>)の直前が、改行されてしまう。

    表(<table>)の直前が、改行されてしまう。 perlでコーディングしています。データベースはmdbファイルです。 <textarea>内を簡単なWebエディタに見立てて、 <textarea>内へhtmlタグなどで書き込んだデータを、 mdbのメモ型フィールに更新し、これをブラウザで表示させています。 このとき、表(<table>)を表示させるために、<textarea>内に<table><tr><td>タグを入力するのですが、mdbファイルに更新する際に、 <table> <tr> <td>   : のように、改行した状態で更新すると、書き込んだ改行分だけ、ブラウザに表示された表の直前が改行されてしまいます。 (mdbファイルに直接書き込んでも同現象となりました。) <table<tr><td>・・・ と改行せずに書き込むと、ブラウザに表示された表の直前は改行されませんでした。 なお、ブラウザに表示させる側のcgiファイルには、改行キー(¥nなど)を改行タグ(<br>)に変換させるために、   $textarea1 =~ s/\r\r/<br>/g;   $textarea1 =~ s/\r/<br>/g;   $textarea1 =~ s/\n/<br>/g; としているため、これと関係していると思われるのですが、 わたくしとしては、  ●<textarea>内で手入力した改行は、ブラウザ表示に反映させるが、  ●<tabel>・・・・</tabel>の部分は、改行して入力されていても、この改行だけは無視する、 と言った、都合のよいことをしたいのですが・・・、行き詰っております。 perlやcgiの問題ではないかも知れませんが、 どなたか、よいアドバイス、ご提案などございませんでしょうか。 ご教授いただければ、大変助かります。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • <br>で改行しても一行あいてしまいます

    少し説明がわかりにくいかもしれませんが <br>タグを使って改行した場合、行と行の間はあきませんよね? でもたまに<br>タグで改行してるのに行と行の間が一行空くことがたまにあります。 その時のタグは <br>文 <br>文2 と打つと 文 文2 後で見るとこのように反映されます。 同じページで同じ<br>タグを使ってる他の行は改行だけで 行の間が空くことはないのに、何度やっても同じ箇所だけ一行空いてしまいます。 これはどうしてでしょうか?プラウザはIE6.0なんですが そこの部分だけ何度やっても一行空いて見た目が変です。 何か解決策はないでしょうか?

    • ベストアンサー
    • HTML