2011-01-09 127 views
0

HI,在数据库中保留用户注释格式

我在评论表单上创建用户将被评论并存储在MYSQL数据库中。我面临的问题是,它作为单行存储在数据库中。它应该以确切的格式存储在表单中用户的输入方式(如新行和所有内容)。我使用PHP将其存储在MySQL数据库中。

+0

什么是数据库字段类型?你如何推送到数据库?内容丰富的文本,比如某种标记,是纯文本吗?等等。 – 2011-01-09 14:32:20

回答

4

首先将其作为文本或longtext存储。其次,在显示评论时,使用像nl2br这样的函数将换行符转换为html <br>元素。这样,换行符被保留。

+0

我想这是有问题的 - 一旦评论被存储到数据库中,他将来想要使用什么格式?如果只有HTML然后将
粘贴到文本中就没问题。 另一件事 - 克里希纳提到(新线和一切)我想知道“一切”是什么? – diagonalbatman 2011-01-09 14:34:06

0

您可以将注释以相同的形式存储在mysql数据库中。一个区别是,当你检索注释时,你的代码应该查找\ r \ n并解释它,并且当你在mysql中插入数据时,你将不得不从注释中转义'和\字符。

1

如果您将文本放入足够长的文本类型字段(例如TEXT)(包括用户输入中的换行符),那么您的文本就会很好地存储在数据库中。

你的问题是如何显示文本格式的用户看到它的方式进入时。这是一个更通用的问题,它只与HTML如何处理空白有关。如Ikke所说,一种方法是在评论上拨打nl2br。这将替换所有换行符(浏览器忽略)与<br>标签,这些标签对渲染的输出有明显的影响。

另一种选择是将文本放在<pre>...</pre>标记中。这将强制浏览器在保留空白的情况下渲染它。

这真的取决于什么更方便/适合你。

更新:只是要清楚:做修改用户输入之前在数据库中插入它(除非它是你输入验证的一部分,例如像从输入剥离HTML标签)。将其存储为“未修改”格式,并且只能在输出之前对其进行一些处理。这样,如果将来输出频道发生变化(例如,将注释导出为文本文件并将其显示为HTML),则始终可以选择执行正确的处理。

+0

但是,当我将注释存储在数据库中时,它不会存储用户键入的换行符和其他字符。我不知道为什么它被删除? – Krishna 2011-01-11 17:08:12