【问题标题】:How to save a text string with line breaks to a MySQL database text field using PHP?如何使用 PHP 将带有换行符的文本字符串保存到 MySQL 数据库文本字段?
【发布时间】:2015-06-25 18:19:45
【问题描述】:

在 SugarCRM 中,我有一个 Textarea 字段,我试图用换行符将数据保存到该字段。

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

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

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

我使用 phpMyAdmin 进入数据库,查看该字段的外观,这里是...

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

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

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 行一样有换行符?

【问题讨论】:

  • 我谷歌了一下,TinyMCE 可以在 SugarCRM 中使用,所以我认为这可以解决任何文本格式的问题
  • API返回的数据是HTML吗?
  • @AleksandarMiladinovic 感谢您的建议和研究,但是对于这种情况,我无法更改 SugarCRM 中的归档类型,因此我将不得不使用自定义 SugarCRM 代码修改输出
  • @dbinns66 我实际上是使用 API 插入数据而不是返回它。因此,我使用 PHP 将数据保存到 SugarCRM 中,然后在编辑和查看字段时在实际的 SugarCRM 应用程序中查看该数据。看来我只需要在 SUgar 中为“视图”部分做一些自定义代码,因为我无法修改它的保存方式。

标签: php mysql line-breaks


【解决方案1】:

正如comments 所建议的,这种问题往往与single quoted strings 中的事实有关:

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

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

但在double quoted strings

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

sequence : \n 然后有换行的意思(LF 或 ASCII 中的 0x0A (10))

所以echo '\n' 将打印 \necho "\n" 将允许您有一个新行作为例外。

当然,您也可以使用PHP_EOL 使其跨操作系统。

【讨论】:

    【解决方案2】:

    使用PHP_EOL 代替&lt;br/> 或\n

    例如

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

    【讨论】:

      【解决方案3】:

      当尝试存储具有换行符的数据时,您希望在存储数据之前使用 php 内部的 nl2br() 函数。在尝试不同的事情以使其在客户的网站上正常运行之前和之后的几个月和几个月之后,我遇到了同样的问题,直到有一天我找到了答案。

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

      希望这会有所帮助。

      【讨论】:

      • 嗨,感谢您的回答,但是如果我要使用nl2br(),那么它将在我的字符串中添加&lt;br&gt; 标签,这不是我想要的。在 SUgarCRM 中,当您查看记录时,如果字符串中有 &lt;br&gt; 标记,那么它会显示标记而不是使它们起作用。
      • "关键是在存储之前使用 nl2br() 转换数据。".不,不要那样做。你以后会后悔的。如果您想以另一种格式输出此文本怎么办?将其放入 PDF、通过邮件发送、在 Android 应用程序中阅读和显示等?而是在 显示 之前转换数据。始终以最通用的形式存储数据。作为文本。仅在 显示 之前添加标记、转义、强制文本为大写等。这允许您为特定的显示格式使用正确的标记和转义符,而不是将其混入数据中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 2017-11-05
      • 2011-04-21
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多