2011-10-01 134 views
2

新行我有一个MySQL表2列:PHP更换存储在MySQL数据库

  1. text:存储可能有换行符为\n, \r, \r\n...多行文本。该文本通过网络表单插入,并且可以通过任何操作系统上的任何浏览器插入。

  2. line_break:表示此特定文本将使用哪种类型的换行符(可能是\n,<br>,<br />,...)。这也通过用户的网络表单插入。

在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用这个问题做什么? –

+1

@YourCommonSense:标题中出现了MySQL这个词,实际上这个问题是关于MySQL的,因为现在用户想要'我如何在数据库中存储换行符以使它正确工作?' 。 – Helmut

回答

4

在php中,"\n"是一个特殊的符号,用于表示“换行”的特殊字符。但是,如果将实际文本\n存储在数据库中,则只有该文本,而不是换行符。当您在PHP中编写'\n'"\\n"时,您会得到什么。确保将实际换行符存储在数据库中,而不是文字\n文本。

+0

@GolezTirol,我如何让用户插入实际的换行符?要添加第二个斜杠,我尝试用addslashes,但似乎没有工作。 –

+2

只要让他们在文本区域输入一个输入内容,或者使用'str_replace'用''\ n“'替换'\ n''。 – GolezTrol