保留 TextArea 中的换行符

Posted

技术标签:

【中文标题】保留 TextArea 中的换行符【英文标题】:Preserve Line Breaks From TextArea 【发布时间】:2017-05-17 00:38:25 【问题描述】:

我正在使用 textarea 使用户能够输入 cmets。但是,如果用户输入新行,则输出时不会出现新行。有什么办法可以让换行符保持不变。

知道如何保留换行符吗?

【问题讨论】:

我刚刚禁用了htmlawed,好像和换行无关,换行还是不显示。所以我只是将textarea数据直接写入mysql,当我从mysql数据库回显数据时它没有显示出来。 我还使用 phpmyadmin 浏览了 mysql 表并看到了评论字段。没有标签被存储, 我正在做一个 Facebook 风格的评论系统,所以我真的不希望它是所见即所得的。不知道为什么不保留换行符? keep textarea input format after using mysql_real_escape_string to store的可能重复 【参考方案1】:

两种解决方案:

    PHP函数nl2br():

    例如,

    echo nl2br("This\r\nis\n\ra\nstring\r");
    
    // will output
    This<br />
    is<br />
    a<br />
    string<br />
    

    将输入包装在&lt;pre&gt;&lt;/pre&gt; 标签中。

    见:W3C Wiki - HTML/Elements/pre

【讨论】:

+1,刚刚在我的 PHP 收藏夹中获得了一个特权位置 nl2br() :) 我认为,选择和样式
 对于 xss 来说要好得多。
【参考方案2】:

得到我自己的答案:使用来自 textarea 的数据的这个函数解决了这个问题:

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

更多:http://php.net/nl2br

【讨论】:

【参考方案3】:

这是我用的

$textToOutput = nl2br(htmlentities($text, ENT_QUOTES, 'UTF-8'));

$text是需要显示的文字 $textToOutput 是从 nl2brhtmlentities 返回的文本,因此它可以安全地显示在 html 上下文中。ENT_QUOTES 将转换双引号和单引号,因此您不会遇到这些问题。

【讨论】:

我相信 UTF-8 现在是 PHP 的默认值。当然,明确表达也无妨。 如何在文本之间插入空格? 您应该始终将原始数据存储在数据库中。然后在显示数据之前对其进行转换和清理。【参考方案4】:

为什么做起来很容易,却又那么难:)

//here is the pull from the form
$your_form_text = $_POST['your_form_text'];


//line 1 fixes the line breaks - line 2 the slashes
$your_form_text = nl2br($your_form_text);
$your_form_text = stripslashes($your_form_text);

//email away
$message = "Comments: $your_form_text";
mail("destination_email@whatever.com", "Website Form Submission", $message, $headers);

你显然需要标题并且可能有更多的字段,但这是你的 textarea 照顾

【讨论】:

这是不安全的,与问题不太相关。 试试吧.... 发布到电子邮件或 SQL.... Potatoes 土豆..... 尝试运行这些行并解决问题.... 没有一堆乱七八糟的行有时有效或无效的代码.... :) 在所有答案中,这个最不简洁【参考方案5】:

我正在使用这两个方法步骤来保留 textarea 中的相同文本以存储在 mysql 中 有时我也可以简单地显示纯文本.....

第 1 步:

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

在查询中输入$textToStore....

第 2 步:

为选择查询编写代码……和直接回显值……

有效

【讨论】:

您应该始终将原始数据存储在数据库中。然后在显示数据之前对其进行转换和清理。【参考方案6】:

这行得通:

function getBreakText($t) 
    return strtr($t, array('\\r\\n' => '<br>', '\\r' => '<br>', '\\n' => '<br>'));

【讨论】:

【参考方案7】:
function breakit($t) 
    return nl2br(htmlentities($t, ENT_QUOTES, 'UTF-8'));

这可能对你有帮助

传递textarea wal

【讨论】:

以上是关于保留 TextArea 中的换行符的主要内容,如果未能解决你的问题,请参考以下文章

从 textarea 复制到 div,保留换行符

限制为 textarea 保留换行符

将 div HTML 复制到 textarea 但保留换行符 [重复]

如何在html textarea POST数据中保留换行符

使用 jQuery 和 JSON 时,如何让我的 textarea 保留换行符?

在 textarea 字段中保留回车符 (Hex 0D)