3

我正在使用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

有什么办法可以在这里实现我想做的事情吗?

4

2 回答 2

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>";
}
于 2013-07-10T12:15:41.800 回答
1

该函数在每个换行符 ( ) 之后nl2br附加一个。<br/>\r\n, \n\r, \n and \r

但是,它不会删除断线本身。结果,当您再次使用str_replace添加断线时,它显示为双。

有两个选项,首先,将 更改str_replace为简单地删除<br/>而不添加换行符,或者其次不使用nl2br

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

于 2013-07-10T12:16:48.717 回答