在MySQL数据库中替换存储的PHP换行符

3
我有一个MySQL表格,包含2列:
  1. text: 存储多行文本,可能含有换行符如\n, \r, \r\n...。该文本通过web表单插入,可以由任何浏览器在任何操作系统上插入。

  2. line_break: 代表该特定文本使用何种换行符(可以是\n, <br>, <br />, ...)。这也是由用户通过web表单插入的。

在PHP中进行替换操作:

$text = preg_replace ("/(\r\n|\r|\n)/", $row['line_break'], $row['text']);

有趣的是,如果换行符存储在数据库中为\n,那么我实际上会显示\n而不是新行。另一方面,以下正则表达式将正确工作:
$text = preg_replace ("/(\r\n|\r|\n)/", "\n", $row['text']);

我需要如何在数据库中存储换行符以使其“正确”工作?

2
MySQL对这个问题做什么? - Your Common Sense
1
@YourCommonSense:标题和正文中都出现了MySQL这个词,实际上这个问题是关于MySQL的,因为用户想知道“我需要如何在数据库中存储换行符才能使其正常工作?” - Helmut
1个回答

4
在php中,"\n"是一个特殊的符号,用于表示“换行”这个特殊字符。但如果你将实际文本\n存储在数据库中,那么你只有这段文本,而不是换行字符。你得到的是在PHP中写'\n'"\\n"时得到的内容。请确保将实际的换行符存储在数据库中,而不是字面上的\n文本。

@GolezTirol,我该如何让用户插入实际的换行符?为了添加第二个斜杠,我尝试过使用addslashes,但似乎不起作用。 - Adrien Hingert
2
只需让用户在文本区域中输入回车,或使用 str_replace'\n' 替换为 "\n" 即可。 - GolezTrol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接