web-dev-qa-db-ja.com

MySQLへの書き込み時にTextAreaからの改行を保持

テキストエリアを使用して、ユーザーがコメントを入力できるようにします。ただし、ユーザーが新しい行を入力した場合、出力時に新しい行は表示されません。改行を維持する方法はありますか。

改行をどのように保持するのですか?

101
Hirvesh

このための2つのソリューション:

  1. PHP関数 nl2br()

    e.g。、

    echo nl2br("This\r\nis\n\ra\nstring\r");
    
    // will output
    This<br />
    is<br />
    a<br />
    string<br />
    
  2. 入力を<pre></pre>タグでラップします。

    参照:W3C Wiki-HTML/Elements/pre

152
superUntitled

ここに私が使用するものがあります

$textToStore = nl2br(htmlentities($inputText, ENT_QUOTES, 'UTF-8'));

$inputTextは、フォームまたはテキストエリアによって提供されるテキストです。 $textToStoreは、データベースに保存されるnl2brおよびhtmlentitiesから返されるテキストです。 ENT_QUOTESは二重引用符と一重引用符の両方を変換するので、それらに問題はありません。

35
hiroki

私自身の答えを得ました:テキストエリアのデータからこの関数を使用すると、問題が解決します:

function mynl2br($text) { 
   return strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />')); 
} 

詳細: http://php.net/nl2br

3
Hirvesh

私はこの2つの方法ステップを使用して、textareaにある同じテキストを保持してmysqlに保存し、取得時にプレーンテキストを表示することもできます。 ....

ステップ1:

$status=$_POST['status'];<br/>
$textToStore = nl2br(htmlentities($status, ENT_QUOTES, 'UTF-8'));

クエリに$textToStore....と入力します.

ステップ2:

選択クエリのコードを記述し、エコー値をダイレクトします。

できます

2
Jayendra Bariya

これは動作します:

function getBreakText($t) {
    return strtr($t, array('\\r\\n' => '<br>', '\\r' => '<br>', '\\n' => '<br>'));
}
1
UbiQue
function breakit($t) {
    return nl2br(htmlentities($t, ENT_QUOTES, 'UTF-8'));
}

これはあなたを助けるかもしれません

textarea walを渡す

0
Libin Thomas