繁体   English   中英

如何使用PHP将包含换行符的文本字符串保存到MySQL数据库文本字段?

[英]How to save a text string with line breaks to a MySQL database text field using PHP?

在SugarCRM中,我有一个Textarea字段,我正在尝试使用换行符保存数据。

如果我插入<br>标签,那么它们会显示为文本中断标签。 如果我尝试类似\\n那么它也会显示为文本。

现在,如果我进入SugarCRM并编辑记录,我可以输入文本并进行换行。 保存记录并再次查看它,并按照我希望的方式显示换行符!

我试图从远程API脚本将带有换行符的数据保存到同一个字段。

我使用phpMyAdmin进入数据库,看看该字段的外观和现状......

前3行有正确的换行符,我在SugarCRM中手动编辑了一个记录。

后面的行来自我的远程API脚本,我在其中将<br>标签保存到字符串中。

Line 1 Text: ghfghdf
Line 1 Color: #0064FF
Line 1 Font: Architect
Line 2 Text: fghfg<br /> Line 2 Color: #9F00FF<br /> Line 2 Font: Belshaw<br /> Line 3 Text: fghdhdhdf<br /> Line 3 Color: #FF5000<br /> Line 3 Font: Benguiat<br />

任何想法如何让我的PHP代码保存字符串到这个字段,并在数据库中查看时有换行符,就像上面的前3行一样?

正如评论中所建议的那样,这种问题往往与单引号字符串中的事实有关:

要指定文字单引号,请使用反斜杠(\\)对其进行转义。 要指定文字反斜杠,请将其加倍(\\\\)。

反斜杠的所有其他实例将被视为文字反斜杠:这意味着您可能习惯使用的其他转义序列( 如\\ r或\\ n )将按字母顺序输出,而不是具有任何特殊含义。

但在双引号字符串中

PHP将为特殊字符解释更多转义序列

序列: \\ n然后具有换行的含义(ASCII或0x0A(10)在ASCII中)

因此echo '\\n'将打印\\ necho "\\n"将允许您将新行作为例外。

当然,您也可以使用PHP_EOL使其跨越OS。

在尝试存储包含换行符的数据时,您希望在存储数据之前使用php内部的nl2br()函数。 我在尝试不同的事情之前和之后都遇到了同样的问题,让它在客户的网站上正常工作,有一天我找到了答案。

关键是在存储之前使用nl2br()转换数据。

希望这可以帮助。

使用PHP_EOL而不是<br/\\n

例如

$array = array("a","b");
$string = implode(PHP_EOL , $array);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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