如何在MySQL表中存储格式化文本?

Sum*_*pta 9 php mysql database-design types

[我的编辑新问题]

我正在以HTML格式输入文本输入<textarea>.假设用户输入以下文本:

1. Hello     World
2. Hi World

3. Hola
Run Code Online (Sandbox Code Playgroud)

我的PHP代码插入到表中: 1. Hello World\r\n2. Hi World\r\n\r\n3. Hola

我使用下面的方法将此文本显示为DIV元素(假设$text从数据库中检索):

<div><?php echo $text ?></div>

我得到的输出是: 1. Hello World 2. Hi World 3. Hola

如何获得用户输入的确切输出?现在唯一重要的是空格,制表符和换行符.如下面的答案所述,nl2br()不建议.还有其他方法吗?


[我的老问题] 我想将格式化文本存储到mysql表中.格式化,我的意思是保留适当的粗体字符,斜体,下划线,空格,制表符,标点符号,换行符等.

如果上述情况不可行,如果我可以保留以下格式,那么我的要求也会得到满足:

  1. 空格和制表符
  2. 标点符号和换行符

是否有可以存储此类数据的数据类型?那些VARCHAR,TEXT和CHAR数据类型呢?请帮忙!

例如:如果我键入以下文本:

Hi!

Hello there!
Run Code Online (Sandbox Code Playgroud)

那么它不应该打印出来

Hi! Hello there!
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 8

原始文本仅包含字符,不包括粗体,斜体或下划线等格式.标签,标点符号和换行符是字符,因此如果你真正需要的话就是一个简单的varchar.

但是如果你想要粗体,斜体和带下划线的文本,你必须决定格式化协议:HTML,wiki语法,RTF等.如果这种格式是文本的,varchar就可以.如果它是二进制的,你需要一个blob.

如果您的文本中有换行符并且它显示在一行中,则可能是因为您将其输出到HTML页面中,其中空格字符序列(制表符,空格,换行符等)将转换为简单空格.使用一个<pre>your HTML-escaped text here</pre>部分,它将正确显示换行符,制表符和多个空格.


Bru*_*ano 3

我想你可以用 来存储utf_encode()。并通过 获取它utf_decode()。可以看到n12brPHP的功能。

- 编辑 -

我使用base64_encode()和 进行加密,以便我使用base64_decode(). 制表符、空格和特殊字符将被保留。

  • Base64 编码与这个问题有什么关系? (2认同)