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

このQ&Aに関連する最新のQ&A

A 回答 (1件)

まんまずばりな関数、nl2br()という関数があります


使い方は以下のような感じに・・・

# $beforeはtextareaタグで入力されたデータ。
# $afterはbrタグが$beforeデータに挿入される

$after = nl2br($before);

参考URL:http://www.php.net/manual/ja/function.nl2br.php
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/09/07 14:00

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

このQ&Aと関連する良く見られている質問

Qフォームのtextareaにnl2brを使用すると、入力内容の改行部分に
が表示されてしまう。

現在、フォームを作成しています。
セッションを利用してフォームの次のファイルにデータを受け渡しています。

問題は、フォームの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 />が表示されないようにできるでしょうか?

よろしくお願いします。

現在、フォームを作成しています。
セッションを利用してフォームの次のファイルにデータを受け渡しています。

問題は、フォームのtextareaにnl2brを使用すると、出力画面のtextareaに入力された内容において改行がある部分に<br />タグが表示されてしまうことです。

フォームの流れ:
start.phpにおいてフォームに入力及び、入力エラーがある場合、入力内容訂正の表示。
mail.phpにおいて入力内容の確認及びデータ送信。

start.phpのtextarea以下:
<textarea name="test"><?php echo nl2br(htmlspe...続きを読む

Aベストアンサー

nl2brを使用して、<br />を \n とかに戻してやればいいと思います。
$data = nl2br(htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8'));
echo ereg_replace ("<br />","\n",$data);
とかで。

QXSSで、
タグだけを有効にしたい

「XSS対策をしたい」かつ「【<a>タグ】と【<pre>タグ】だけを有効にしたい」のですが、
どうすれば良いでしょうか?

Aベストアンサー

投稿にhtmlのタグを書かせないように(書いたとしても無効に)したいが、一部の要素の機能だけは実現したい・・・ということであれば、昔から『BBコード』という実装があります。

http://ja.wikipedia.org/wiki/BB%E3%82%B3%E3%83%BC%E3%83%89

Qtextarea内での改行がechoで反映されない

$str = (textareaにてフォーム送信された内容)
だとして、echo $str;としてブラウザで確認してみると改行が反映されてません。
ちなみに、$strをメール送信して、受信メールで確認したところ改行はされていました。
どなたか解決策をご存知の方いらっしゃいましたらご教示宜しくお願い致します。

Aベストアンサー

HTMLソース上の改行コードは、ブラウザ上では1つの空白として表示されます。ブラウザ上で改行を行うには<br />タグを書く必要があります。
PHPにはそのための関数があります。
echo nl2br($str);
としてください。

QTEXTAREAに書いた改行コードを正しくBRに

置き換えたいのですが、<br>がたくさん増えてしまいます。

下記のように書き換えています。
foreach ($data as $key => $value)
{
$data[$key] = preg_replace("/^(\s| )+$/", "", $data[$key]);
$data[$key] = strip_tags($data[$key]);
$data[$key] = stripslashes($data[$key]);
$data[$key] = mb_convert_kana($data[$key], "KV");
$data[$key] = htmlspecialchars($data[$key]);
$data[$key] = str_replace("\r", "<br>", $data[$key]);
$data[$key] = str_replace("\n", "<br>", $data[$key]);
$data[$key] = mysql_escape_string($data[$key]);
}

別途↓も入れましたが、1改行コードにつき2個<br>がつきます。
文字コードはutfです。
$data[$key] = str_replace("\r\n", "<br>\n", $data[$key]);

正しく改行コードを<br>に変換できないでしょうか?

置き換えたいのですが、<br>がたくさん増えてしまいます。

下記のように書き換えています。
foreach ($data as $key => $value)
{
$data[$key] = preg_replace("/^(\s| )+$/", "", $data[$key]);
$data[$key] = strip_tags($data[$key]);
$data[$key] = stripslashes($data[$key]);
$data[$key] = mb_convert_kana($data[$key], "KV");
$data[$key] = htmlspecialchars($data[$key]);
$data[$key] = str_replace("\r", "<br>", $data[$key]);
$da...続きを読む

Aベストアンサー

nl2br()を使いましょう。

参考URL:http://jp2.php.net/manual/ja/function.nl2br.php

QPHPの