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を使用して行うことができますか?
例をいただければ幸いです。
読んでくれてありがとう
しないでくださいnl2br
データベースに保存するとき。行う nl2br
テキストをHTMLで表示しているとき。データベースにHTMLフォーマットを保存しないことを強くお勧めします(リッチHTMLエディターを使用している場合を除き、その場合は愚かなことはしません)。
改行\n
は、テキストエリアの改行になります。
str_replace
を使用して、<br />
タグを行末文字に置き換えることができます。
str_replace('<br />', PHP_EOL, $textarea);
または、最初にnl2br
を呼び出さずにデータをデータベースに保存することもできます。そのようにすると、改行が残ります。 HTMLとして表示する場合は、nl2br
を呼び出します。このアプローチのもう1つの利点は、「<br />
」が6であるのに対して、改行が1文字であるため、データベースのストレージスペースが少なくて済むことです。
ああ、本当に簡単です
追加するだけ
white-space:pre-wrap;
表示要素css
<p>
を使用して結果を表示している場合、CSSは
p{
white-space:pre-wrap;
}
次のコードを使用できます。
$course_description = nl2br($_POST["course_description"]);
$course_description = trim($course_description);
間違った答えがここに掲載されています。 \n
を<br />
に置き換える代わりに、<br />
を\n
に置き換えています
したがって、textareaに入力したときにmysqlに<br />
を保存するための適切な答えは次のとおりです。
str_replace("\n", '<br />', $textarea);
私の推奨事項は、nl2brで解析する代わりに改行でデータベースにデータを保存することです。入力ではなく出力でnl2brを使用する必要があります。
質問には、phpまたはjavascriptを使用できます。
PHP:
str_replace('<br />', "\n", $textarea);
jQuery:
$('#myTextArea').val($('#myTextArea').val().replace(@<br />@, "\N"));
簡単な方法:
これを使用してmysqlに挿入します。
_$msg = $_GET['msgtextarea']; //or POST and my msg field format: text
$msg = htmlspecialchars($msg, ENT_QUOTES);
_
出力にこれを使用します:
echo nl2br($br['msg']);
フォームで動作することがわかったのはstr_replace( 'lt; brgt;'、PHP_EOL、$ textarea);
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;
});
PHPサイド:Textarea文字列からPHP string
$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
PHP側:PHP TextAreaに戻る文字列string:
$list = str_replace('|', ' ', $r['db_field_name']);
これは私に有効です。
str_replace(array("\r", "\n"), ' ', $textareavalue);