[英]MySql table design : Use lots of rows or store the information formatted in one text field per row?
[英]How to store formatted text in MySQL table?
[我编辑的新问题]
我将 HTML 形式的文本输入作为<textarea>
。 假设用户输入了以下文本:
1. Hello World
2. Hi World
3. Hola
我的 PHP 代码插入到表中为: 1. Hello World\r\n2. Hi World\r\n\r\n3. Hola
1. Hello World\r\n2. Hi World\r\n\r\n3. Hola
我正在使用以下方法将此文本显示到 DIV 元素中(假设$text
是从数据库中检索的):
<div><?php echo $text?></div>
我得到的 output 是: 1. Hello World 2. Hi World 3. Hola
如何在用户输入时获得准确的 output? 现在对我来说唯一重要的是空格、制表符和换行符。 如以下答案所述,不建议nl2br()
。 还有什么办法吗?
[我的老问题]我想将格式化文本存储到 mysql 表中。 通过格式化,我的意思是保留适当的粗体字符、斜体、下划线、空格、制表符、标点符号、换行符等。
如果上述不可行,如果我可以保留以下格式,那么我的要求也得到满足:
是否有任何数据类型可以存储此类数据? VARCHAR、TEXT 和 CHAR 数据类型呢? 请帮忙!
例如:如果我输入以下文本:
Hi!
Hello there!
那么它不应该像这样打印
Hi! Hello there!
原始文本仅包括字符,不包括粗体、斜体或下划线等格式。 制表符、标点符号和换行符都是字符,所以如果你真正需要的是一个简单的 varchar 就可以了。
但是,如果您想要粗体、斜体和带下划线的文本,则必须确定格式协议:HTML、wiki 语法、RTF 等。如果这种格式是文本的,则 varchar 就可以了。 如果它是二进制文件,则需要一个 blob。
如果您的文本中有换行符并且它显示在一行上,这可能是因为您在 HTML 页面中将其 output 它转换为简单的空格字符序列(制表符、空格、换行符等)。 使用<pre>your HTML-escaped text here</pre>
部分,它将正确显示换行符、制表符和多个空格。
保留空格和标点符号。
如果您没有看到它们,那么您可能是在 HTML 文档中输出文本而忘记将其标记为 HTML:请记住,web 浏览器中的纯文本换行符和连续空格会忽略换行符和连续空格。
至于像粗体这样的格式,您需要想出一些标记文本的方法来存储格式信息。 您可以考虑 HTML 或 Markdown。
我认为您可以使用utf_encode()
进行存储。 并使用utf_decode()
获取它。 可以看到n12br
的 n12br function。
- 编辑 -
我使用base64_encode()
加密并使用base64_decode()
。 制表符、空格和特殊字符被保留。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.