繁体   English   中英

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

[英]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 表中。 通过格式化,我的意思是保留适当的粗体字符、斜体、下划线、空格、制表符、标点符号、换行符等。

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

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

是否有任何数据类型可以存储此类数据? 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM