2013-07-10 63 views
4

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

Hello 
World 

它被存储为

Hello<br />World 

我没意见。 但是当我在文字区域我得到再次显示它(为“\ n” str_replace..ing的BR标签后)

Hello 

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

有什么办法来实现什么,我想在这里做什么?

+0

在将数据存储到数据库之前,您会使用'nl2br'吗?不要这样做。 – PeeHaa

+0

为什么在存储它之前在文本上使用nl2br函数?不需要使用任何功能,只需保存就可以了。 – Rikesh

回答

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>"; 
} 
+0

当然,我现在看到它,当我真的不需要做任何事情时,我变得非常疯狂。非常感谢。 – user1887239

1

nl2br功能追加后的各换行符(\r\n, \n\r, \n and \r)一个<br/>

然而,它并没有删除断线本身。因此,当您使用str_replace再次添加中断线时,它显示为双倍。

有两种选择,首先,将str_replace更改为仅删除<br/>而不添加新行字符,或者其次不使用nl2br

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