web-dev-qa-db-ja.com

テキストエリアでの改行

Textareaを保存するとき、nl2br()またはstr_replaceを使用して/ nをbrタグなどに変更できることは知っています。これらの改行を使用してデータをテキストエリアに戻すことについて、私はあまり見つけることができないようです。

たとえば、ユーザーがフィールドを更新できるフォームがあります。したがって、ユーザーは以下を入力できます。

foo
bar
baz

データベースに保存すると、次のように保存されます。

foo<br />bar<br />baz<br />

これで、ページの更新後にそのユーザーがそのフォームに戻ると、データベースからデータを取得することにより、すべてのフィールドに以前のデータが自動的に入力されます。

ただし、textareaは、改行を追加する代わりに、brタグをテキストとして表示します。 textareaがこれらを改行ではなく喜びとして解釈することを期待して、brタグを/ nに変更しようとしました。これに加えて、私はエスケープなども試みました。

だから私の質問はこれを行うことができますか?または、もっと重要なことは、HTML/PHPを使用して行うことができます(imはsmartyを使用)。それが不可能な場合、javascriptを使用して行うことができますか?

例をいただければ幸いです。

読んでくれてありがとう

35
fl3x7

しないでくださいnl2brデータベースに保存するとき。行う nl2brテキストをHTMLで表示しているとき。データベースにHTMLフォーマットを保存しないことを強くお勧めします(リッチHTMLエディターを使用している場合を除き、その場合は愚かなことはしません)。

改行\nは、テキストエリアの改行になります。

65
Halcyon

str_replaceを使用して、<br />タグを行末文字に置き換えることができます。

str_replace('<br />', PHP_EOL, $textarea);

または、最初にnl2brを呼び出さずにデータをデータベースに保存することもできます。そのようにすると、改行が残ります。 HTMLとして表示する場合は、nl2brを呼び出します。このアプローチのもう1つの利点は、「<br />」が6であるのに対して、改行が1文字であるため、データベースのストレージスペースが少なくて済むことです。

27

ああ、本当に簡単です

追加するだけ

white-space:pre-wrap;

表示要素css

<p>を使用して結果を表示している場合、CSSは

p{
   white-space:pre-wrap;
}
24
Nizam Kazi

次のコードを使用できます。

$course_description = nl2br($_POST["course_description"]);
$course_description = trim($course_description);
6
rahul

間違った答えがここに掲載されています。 \n<br />に置き換える代わりに、<br />\nに置き換えています

したがって、textareaに入力したときにmysqlに<br />を保存するための適切な答えは次のとおりです。

str_replace("\n", '<br />',  $textarea);
2
Bashir Noori

私の推奨事項は、nl2brで解析する代わりに改行でデータベースにデータを保存することです。入力ではなく出力でnl2brを使用する必要があります。

質問には、phpまたはjavascriptを使用できます。

PHP:

str_replace('<br />', "\n", $textarea);

jQuery:

$('#myTextArea').val($('#myTextArea').val().replace(@<br />@, "\N"));
1
Ryan Casas

簡単な方法:

  1. これを使用してmysqlに挿入します。

    _$msg = $_GET['msgtextarea']; //or POST and my msg field format: text
    $msg = htmlspecialchars($msg, ENT_QUOTES);_
  2. 出力にこれを使用します:

    echo nl2br($br['msg']);
1

フォームで動作することがわかったのはstr_replace( 'lt; brgt;'、PHP_EOL、$ textarea);

0
Mike

From PHP改行に単一引用符を使用すると、そのvarをHTMLテキストエリアに渡すときに改行をサポートするために働いたvalue属性

[〜#〜] php [〜#〜]

foreach ($videoUrls as $key => $value) {
  $textAreaValue .= $value->video_url . '\n';
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

HTML/JS

$( document ).ready(function() {
    var text = "<?= htmlspecialchars($textAreaValue); ?>";
    document.getElementById("video_urls_textarea").value = text;
});
0
Gene Bo

PHPサイド:Textarea文字列からPHP string

$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);

PHP側:PHP TextAreaに戻る文字列string:

$list = str_replace('|', '&#13;&#10;', $r['db_field_name']);
0
cssyphus

これは私に有効です。

 str_replace(array("\r", "\n"), '&#10;', $textareavalue);
0
Joel Enanod Jr