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

时间:2013-07-10 12:12:51

标签: php mysql str-replace nl2br

我使用nl2br().<br/>将文本区域中的用户输入存储到数据库中 现在的问题是,当我稍后在文本区域中显示此输入时,我不想显示"br"标记,而是作为新行。<br/> 我正在使用str_replace但这似乎每次来回时都会添加一个新行。 例如。用户输入

Hello
World

它存储为

Hello<br />World 
对我很好。 但是当我再次在文本区域中显示它时(在str_replace ...之后用“\ n”标记br标签)

Hello

World  //which if i submit gives me Hello<br /><br />World

有没有办法实现我想做的事情?

2 个答案:

答案 0 :(得分:1)

不要将其与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>";
}

答案 1 :(得分:1)

nl2br功能会在每个换行符(<br/>)后附加\r\n, \n\r, \n and \r

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

有两个选项,首先,更改str_replace只需删除<br/>而不添加换行符,或者其次是不使用nl2br

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