Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 文本区域中的换行符_Php_Html_Textarea_Line Breaks_Nl2br - Fatal编程技术网

Php 文本区域中的换行符

Php 文本区域中的换行符,php,html,textarea,line-breaks,nl2br,Php,Html,Textarea,Line Breaks,Nl2br,我知道在保存文本区域时,您可以使用nl2br()或str_replace将/n标记更改为br标记等。但是,我不确定如何将换行符插入文本区域。我似乎找不到太多关于用这些换行符将数据放回文本区域的信息 例如,我有一个表单,用户可以在其中更新字段。因此,用户可以输入: foo bar baz 将其保存到数据库时,将保存为: foo<br />bar<br />baz<br /> foobarbaz 现在,当该用户在页面刷新后返回到该表单时,所有字段都会通过从数

我知道在保存文本区域时,您可以使用nl2br()或str_replace将/n标记更改为br标记等。但是,我不确定如何将换行符插入文本区域。我似乎找不到太多关于用这些换行符将数据放回文本区域的信息

例如,我有一个表单,用户可以在其中更新字段。因此,用户可以输入:

foo
bar
baz
将其保存到数据库时,将保存为:

foo<br />bar<br />baz<br />
foo
bar
baz
现在,当该用户在页面刷新后返回到该表单时,所有字段都会通过从数据库获取数据自动填充其以前的数据

但是,文本区域将br标记显示为文本,而不是添加换行符。我还尝试将br标签改为/n,希望textarea能将其解释为换行符,但没有乐趣。除此之外,我还试着逃跑等等

所以我的问题是这能做到吗?或者更重要的是,可以使用HTML/PHP(im使用smarty)完成。如果这不可能,那么可以使用javascript来完成吗

请举例说明


感谢阅读您可以使用
str\u replace

标记替换为行尾字符

str_replace('<br />', PHP_EOL, $textarea);
str\u replace(“
”,PHP\u EOL,$textarea);

或者,您可以将数据保存在数据库中,而无需先调用
nl2br
。这样,断线将保持不变。当显示为HTML时,请调用
nl2br
。这种方法的另一个好处是,它需要更少的数据库存储空间,因为换行符是1个字符,而“

”是6个字符。

将其保存到数据库时不要执行
nl2br
。在HTML中显示文本时,请执行
nl2br
。我强烈建议不要在数据库中存储任何HTML格式(除非您也使用了富HTML编辑器,在这种情况下,不这样做是愚蠢的)


新行
\n
将成为文本区域中的新行。

我不确定这是否可行,但您应该尝试

我的建议是使用换行符将数据保存到数据库中,而不是使用nl2br对其进行解析。您应该在输出而不是输入中使用nl2br

str_replace('<br />', "\n", $textarea);
对于您的问题,您可以使用php或javascript:

PHP:

str_replace(“
”,“\n”,“$textarea”);
jQuery:

white-space:pre-wrap;
$('myTextArea').val($('myTextArea').val().replace(@
,“\N”);
啊,这真的很简单

加上

p{
   white-space:pre-wrap;
}
到您的显示元素css

我的意思是,如果您使用
显示结果,那么您的css应该是

<?php
$smarty = new Smarty;
$smarty->assign('test', "This is a \n Test");
$smarty->display('index.tpl');
?>
在HTML中

$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
这是一个
测试
PHP端:从Textarea字符串到PHP字符串

$list = str_replace('|', '&#13;&#10;', $r['db_field_name']);
PHP端:PHP字符串返回到TextArea字符串:

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

您可以使用以下代码:

 str_replace(array("\r", "\n"), '&#10;', $textareavalue);
这对我有用

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

在PHP中,当我将该变量传递给HTML文本区域value属性时,使用单引号作为换行符对我来说非常有用,可以支持换行符

PHP

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

HTML/JS

str_replace("\n", '<br />',  $textarea);
$(文档).ready(函数(){
var text=“”;
document.getElementById(“video\uURL\uTextArea”).value=text;
});

一些错误的答案张贴在这里。 他们不是将
\n
替换为

,而是将

替换为
\n

因此,当您在textarea中输入时,下面是一个在mysql中存储

的好答案:

$msg = $_GET['msgtextarea']; //or POST and my msg field format: text
$msg = htmlspecialchars($msg, ENT_QUOTES);
str\u replace(“\n”,”
,$textarea);
简单的方法:

  • 使用此选项插入mysql:

    $msg=$\u GET['msgtextarea']//或POST和我的msg字段格式:文本
    $msg=htmlspecialchars($msg,ENT_引号)

  • 并将其用于输出:

    echonl2br($br['msg'])


  • 我在表格中找到的效果是
    str_replace('br',PHP_EOL,$textarea)

    @Nideo如果这是你的意思,那就有点棘手,也不是很整洁。但是如果你不使用任何
    的话,它是有效的,但是让用户所写的感谢每个人的回复。我现在可以看到,更好的做法是不在数据库中添加html,而是在需要时在数据库中应用它:)谢谢you@fl3x7别忘了,出于安全考虑,你必须在进来的路上处理:)@Oddantfr同意:)我刚养成了一个习惯,有一个包含所有页面相关预处理的包含文件。因此,在执行任何与页面相关的php之前,所有POST和GET值都会被清除。需要指出的一点是,使用\n between
    (双引号)而不是
    (单引号)。否则它将不起作用。例如:
    “\n”
    ,当然,如果您正在执行显示中的替换而不是将其保存到数据库中(我认为这肯定更好)那么代码应该是str_replace(PHP_EOL,
    ,$textarea);…或者仅仅是nl2br($textarea)…只有当您在textarea中插入数据并在其他元素(前端)中显示数据时,如果您希望它完全像
    (除换行外,没有包装),然后可以使用
    p{white space:pre;}
    $( document ).ready(function() {
        var text = "<?= htmlspecialchars($textAreaValue); ?>";
        document.getElementById("video_urls_textarea").value = text;
    });
    
    str_replace("\n", '<br />',  $textarea);
    
    $msg = $_GET['msgtextarea']; //or POST and my msg field format: text
    $msg = htmlspecialchars($msg, ENT_QUOTES);
    
    echo nl2br($br['msg']);