【问题标题】:Removing 'new lines' from MySQL text field从 MySQL 文本字段中删除“新行”
【发布时间】:2011-08-05 12:36:47
【问题描述】:

我正在尝试通过 PHP 在 MySQL 数据库上运行 csv 导出。一切正常,直到我进入描述字段。每行都以文本字段中的新行结尾。因此,对于文本字段中的每一行,我都会在 CSV 中得到一个新行。当我想要的只是行尾的新行时。

到目前为止,我已经尝试了一些解决方案,包括:

REPLACE(description, '\r\n', '\n')

str_replace( array( "\r" , "\n" ) ,'\n' , $data);

description = REPLACE(description, description, TRIM(BOTH '\r\n' FROM description))

感谢任何帮助。

【问题讨论】:

  • 新行对内容有多重要——如果你去掉它们,是否会影响文本的含义?需要重新放回去吗?
  • 在这种情况下,新行并不是严格需要的。但是对于将来的参考,如果您可以以任何方式建议可以在不丢失任何新行的情况下完成它(即导出),那将是很棒的。
  • 一个合适的 CSV 库应该为您处理转义数据。谷歌搜索了一下,我对 php 在这件事上不是很有信心,因为我在这个过程中找不到任何不需要文件 IO 的选项。我认为一种选择可能是在前面放置一个反斜杠或换行符。
  • @Paul - 您需要将 something 嵌入到使用的最终输出中,而不是换行。请参阅我的回答以获取一些建议。
  • 干杯,伙计们。是的,描述已经嵌入了 html,因此不需要换行符,但我从没想过用反斜杠转义新行。这就是我一直在寻找的答案。谢谢。

标签: php mysql csv newline


【解决方案1】:

为什么要用\n 代替它?

尝试将其替换为 空字符串,例如 ''。尝试将\r\n 替换为"",将\n 替换为""

【讨论】:

  • 你说得对。今天有一个我最快乐的时刻,复制和粘贴代码。它仍然不起作用,但我刚刚意识到,如果我只对 '\n' 进行替换,它就会完美地工作。谢谢!
【解决方案2】:

换行符并不总是\n ...它们可以是\r\n\n\r\n\r,具体取决于字符编码。

如果您有能力创建一个新的 csv 数据文件并希望将换行符更改为 html br 标签,请查看nl2br() 函数,它非常易于使用。如果字符串替换对上述换行符不起作用,请将数据写入硬盘上的临时文件,然后逐行解析以将所有换行符连接到一个空格中。 PHP 手册中有一些简单的示例可供参考。

我实际上遇到了相反的问题,我必须检查已经创建的 csv 文件并找到换行符。在这种情况下,答案是使用正则表达式,但我很幸运,第一列和最后一列数据足够独特,可以解析和捕获其间的所有数据。另一种选择是删除所有换行符并根据列数收集数据。

【讨论】:

    【解决方案3】:

    我一般用preg_replace()

    preg_replace( "/\r|\n/", "", $data);
    

    但你总是可以使用str_replace()(它更快)

    str_replace(array("\r", "\n"), "", $data);
    

    【讨论】:

      【解决方案4】:

      您可以尝试用\\n 甚至HTML <br> 标签替换。这将使您能够在以后重新设置换行符。

      【讨论】:

        猜你喜欢
        • 2021-10-25
        • 1970-01-01
        • 2011-01-02
        • 2022-12-23
        • 2015-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多