php - 我应该如何在 MySQL 数据库中存储换行符?

标签 php html mysql newline

我在脑海中不停地转圈,试图决定在 MySQL 数据库中存储换行符的最佳方式。

一些背景知识;要求用户完成文本区域。这必须存储在 MySQL 数据库中,然后才能被读回并将内容包含在 HTML 电子邮件中。

我应该将它们存储为:

1) 字符串字面量——这肯定是危险的错误做法

2) 作为带有 \r\n 的字符串在 - 当我从数据库中读回它时,它被读取为 4 个字符,所以 nl2br()无法正确替换它们。

3) 作为 HTML <br /> - 因为它必须是 html 实体编码才能存储,所以它最终被存储为 &lt;br /&gt;所以当它到达电子邮件时 <br />打印而不是实际的换行符。通过 html_entity_decode()将解码其他需要编码的字符。

非常感谢任何帮助。

最佳答案

按原样存储,但先转义。这是您的选择 1. 当您需要显示此数据时,请应用您需要的任何功能来格式化它。如果您需要在 HTML 中显示它,请使用 nl2br()htmlentities() 函数。这也适用于邮件。

如果你有这样的文本区域数据,

$text="Hello Sir,
I am Robert'); Drop table students; --
.....
Yours most obedient pupil
.....";

转义后按原样存储,或者使用准备好的语句。

$text = $mysqli->real_escape_string($text);

关于php - 我应该如何在 MySQL 数据库中存储换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14138706/

相关文章:

jquery - 如何在 .show jquery 之后添加时间延迟

jquery - 如何向动态创建的图像添加边框图像?

php - OctoberCMS组件导致内存错误

php - 如何计算foreach中相同键的存在次数php

php - 如何使用imagick的writeImage()函数?

php - 加载类 EWSType_FindItemType (php-ews) 时出现 fatal error

php - 在 session 中存储值并在 tpl 文件 xcart 上检索

jquery - Ajax jquery过滤部分html

php - 两个表的逻辑问题

java - Hibernate 在选择查询中生成过多的连接