在textarea中换行
我知道当保存一个textarea你可以使用nl2br()或str_replace来改变/ N到br标签等等。但是我不知道如何插入换行到textarea。 我似乎无法find很多有关这些换行符的数据回到textarea。
例如,我有一个表单,用户可以更新字段。 所以用户可以input:
foo bar baz
当它被保存到数据库时,它将被保存为:
foo<br />bar<br />baz<br />
现在,当用户在页面刷新后回到该表单时,通过从数据库中获取数据,所有的字段都会自动填充以前的数据。
但是,textarea将br标签显示为文本而不是在换行符中添加。 我也尝试改变br标签到/ n希望textarea将这些解释为断行,但没有喜悦。 除此之外,我也尝试逃跑等。
所以我的问题是可以做到这一点? 或者更重要的是可以使用HTML / PHP(即时通讯使用smarty)来完成。 如果没有可能可以使用JavaScript来完成?
例子将不胜感激。
谢谢阅读
将其保存到数据库时不要执行nl2br
。 当你用HTML显示文本的时候,做nl2br
。 我强烈build议不要在数据库中存储任何HTML格式(除非你使用了一个丰富的HTML编辑器,在这种情况下,这将是愚蠢的)。
一个换行符\n
将成为textarea中的换行符。
您可以使用str_replace
将<br />
标签replace为行尾字符。
str_replace('<br />', PHP_EOL, $textarea);
或者,您可以将数据保存到数据库中,而无需先调用nl2br
。 这样,换行符将保持不变。 当您显示为HTML时,请致电nl2br
。 这种方法的一个额外的好处是,它将需要较less的数据库存储空间,因为换行符是1个字符,而“ <br />
”是6。
啊,这真的很简单
只需添加
white-space:pre-wrap;
到你的显示元素的CSS
我的意思是如果你使用<p>
显示结果,那么你的CSS应该是
p{ white-space:pre-wrap; }
你可以使用下面的代码:
$course_description = nl2br($_POST["course_description"]); $course_description = trim($course_description);
我的build议是使用换行符将数据保存到数据库,而不是使用nl2brparsing数据。 你应该在输出中使用nl2br而不是input。
对于你的问题,你可以使用PHP或JavaScript:
PHP:
str_replace('<br />', "\n", $textarea);
jQuery的:
$('#myTextArea').val($('#myTextArea').val().replace(@<br />@, "\N"));
PHP方面:从Textareastring到PHPstring
$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
PHP方面:PHPstring返回TextAreastring:
$list = str_replace('|', ' ', $r['db_field_name']);
这对我有用。
str_replace(array("\r", "\n"), ' ', $textareavalue);
从PHP使用单引号换行符为我支持换行符时,我将该传递给HTML文本区域值属性
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; });
一些错误的答案张贴在这里。 而不是将\n
replace为<br />
,而是将<br />
replace为\n
所以这里是一个很好的答案,当你在textarea中input时,在你的mysql中存储<br />
:
str_replace("\n", '<br />', $textarea);
简单的方法:
-
用这个来插入到mysql:
$msg = $_GET['msgtextarea']; //or POST and my msg field format: text $msg = htmlspecialchars ($msg, ENT_QUOTES);
-
并使用这个输出:
echo nl2br ($br['msg']);
我在表单中find的工作是str_replace('&lt; br&gt;',PHP_EOL,$ textarea);
我不知道这是可能的,但你应该尝试<pre><textarea> ... </textarea></pre>
<?php $smarty = new Smarty; $smarty->assign('test', "This is a \n Test"); $smarty->display('index.tpl'); ?>
在index.tpl
{$test|nl2br}
在HTML中
This is a<br /> test