我在脑海中不停地转圈,试图决定在 MySQL 数据库中存储换行符的最佳方式。
一些背景知识;要求用户完成文本区域。这必须存储在 MySQL 数据库中,然后才能被读回并将内容包含在 HTML 电子邮件中。
我应该将它们存储为:
1) 字符串字面量——这肯定是危险的错误做法
2) 作为带有 \r\n
的字符串在 - 当我从数据库中读回它时,它被读取为 4 个字符,所以 nl2br()
无法正确替换它们。
3) 作为 HTML <br />
- 因为它必须是 html 实体编码才能存储,所以它最终被存储为 <br />
所以当它到达电子邮件时 <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/