写入MySQL时保留TextArea的换行符

时间:2011-02-19 04:31:16

标签: php mysql html

我正在使用textarea来启用用户输入评论。但是,如果用户输入新行,则在输出新行时不会显示新行。有没有办法让换行保持不变。

知道如何保留换行符吗?

7 个答案:

答案 0 :(得分:147)

两种解决方案:

  1. PHP函数nl2br()

    <强>如,

    echo nl2br("This\r\nis\n\ra\nstring\r");
    
    // will output
    This<br />
    is<br />
    a<br />
    string<br />
    
  2. 将输入包裹在<pre></pre>标记中。

    请参阅: W3C Wiki - HTML/Elements/pre

答案 1 :(得分:35)

这是我使用的

$textToStore = nl2br(htmlentities($inputText, ENT_QUOTES, 'UTF-8'));

$inputText是表单或textarea提供的文本。 $textToStore是来自nl2brhtmlentities的返回文本,存储在您的数据库中。 ENT_QUOTES会转换双引号和单引号,因此您可以毫不费力地使用它们。

答案 2 :(得分:3)

得到了我自己的答案:从textarea的数据中使用此函数解决了问题:

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

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

答案 3 :(得分:2)

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

第1步:

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

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

第2步:

  

为select query ...和直接回显值编写代码....

它有效

答案 4 :(得分:1)

这有效:

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

答案 5 :(得分:0)

function breakit($t) {
    return nl2br(htmlentities($t, ENT_QUOTES, 'UTF-8'));
}

这可能对您有帮助

通过沃尔玛地区

答案 6 :(得分:-7)

为什么制作太酷的人才会变得如此简单:)

//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照顾