Php 如何在textarea和数据库之间保留换行符?

Php 如何在textarea和数据库之间保留换行符?,php,mysql,str-replace,nl2br,Php,Mysql,Str Replace,Nl2br,我正在使用nl2br()将用户输入的文本区域存储到数据库中。 现在的问题是,当我稍后在文本区域中显示此输入时,我不想显示“br”标记,而是作为新行显示。 我使用的是str_replace,但每次我来回都会添加一行新代码。 例如,用户输入 Hello World 它被存储为 Hello<br />World 你好世界 我很好。 但是当我在文本区域中再次显示它时(在str\u replace..ing br标记为“\n”之后) 你好 世界//如果我提交,它会给我HelloWorl

我正在使用
nl2br()将用户输入的文本区域存储到数据库中。
现在的问题是,当我稍后在文本区域中显示此输入时,我不想显示
“br”
标记,而是作为新行显示。

我使用的是
str_replace
,但每次我来回都会添加一行新代码。 例如,用户输入

Hello
World
它被存储为

Hello<br />World 
你好
世界
我很好。 但是当我在文本区域中再次显示它时(在str\u replace..ing br标记为“\n”之后)

你好 世界//如果我提交,它会给我Hello

World 有什么方法可以实现我想在这里做的吗?

不要将它存储在
nl2br
中。您应该只存储发布的原始数据。如果要更新它以显示,请在此时使用
nl2br

if ($storing) {
    $dbstmt->execute($_POST['textarea-value']);
}
else {
    $textareaValue = $db->query($select);
    echo "<div>" . nl2br(htmlspecialchars($textareaValue)) . "</div>";
    echo "<textarea>" . htmlspecialchars($textareaValue) . "</textarea>";
}
if($storing){
$dbstmt->execute($_POST['textarea-value']);
}
否则{
$textareaValue=$db->query($select);
echo“.nl2br(htmlspecialchars($textareaValue))”;
echo“.htmlspecialchars($textareaValue)。”;
}

nl2br函数在每个换行符(
\r\n\n\r\n和\r
)后追加一个

但是,它不会删除打断线本身。因此,当使用
str_replace
再次添加换行符时,换行符显示为double

有两个选项,第一,更改
str_replace
以简单地删除

而不添加新行字符,或者第二,不使用
nl2br


当我需要在html中显示数据时,我会选择第二个,并使用
nl2br

在将数据存储到数据库之前,您会使用
nl2br
吗。不要这样做。为什么在存储文本之前要对文本使用nl2br函数?不需要使用任何函数,只需按原样保存即可。当然,我现在看到了,当我真的不需要做任何事情时,我变得非常疯狂。谢谢。
if ($storing) {
    $dbstmt->execute($_POST['textarea-value']);
}
else {
    $textareaValue = $db->query($select);
    echo "<div>" . nl2br(htmlspecialchars($textareaValue)) . "</div>";
    echo "<textarea>" . htmlspecialchars($textareaValue) . "</textarea>";
}