【问题标题】:CSV lines in array(), need to preserve line breaksarray() 中的 CSV 行,需要保留换行符
【发布时间】:2011-10-10 12:15:05
【问题描述】:

我有一个以下格式的数组 - 它本质上是一个预先格式化的 CSV 行数组 - 本示例中的键 0 和 1 有一个包含换行符的 CSV 值。

Array
(
    [0] => 'foo,foo,foo,foo
    bar,foo,a:1:{i:0;s:4:"blah";}'
    [1] => 'bar,bar,bar,bar
    foo,bar,a:1:{i:0;s:4:"blah";}'
    [1] => 'bar,bar,bar,foo,bar,a:1:{i:0;s:4:"blah";}'
)

我接下来要做的是使用\r\n 作为胶水,生成 CSV 文件,然后将其写出来。问题是生成的文件不会将包含换行符的字段用双引号括起来,以便可以保留换行符(或者至少我假设它会保留)。

生成的 CSV 文件将上传到数据库或在 Excel 中编辑,并且需要在字段中保留换行符。

在分解为正确格式后使用 fputcsv 会生成一个 CSV,该 CSV 具有换行符并用双引号括起来,在记事本或类似工具中查看,但在 Excel 中打开时不会。

  $parent_wholelines = array();
  foreach ($output_array as $wholeline) {
    $parent_wholelines[] = explode(',', $wholeline);
  }

【问题讨论】:

  • 首选var_exportprint_r 不太擅长准确地向我们展示您的数据是什么。
  • @Tomalak-Geret'kal - 在这种情况下 var_export 输出相同的内容,加上每个键的一些引号。
  • 是的;这些很有用。精度在我们的领域很重要。

标签: php csv newline fputcsv


【解决方案1】:

来自http://www.php.net/manual/en/function.fputcsv.php的一个sn-p,也许可以帮助你。 或者使用序列化:http://php.net/manual/en/function.serialize.php

【讨论】:

  • 谢谢,但这只是 php.net 的 fputcsv 的复制和粘贴。我知道如何使用它,我问的是另一个问题,因为我的数据不是那种格式。我知道 serialize() 因为这就是创建一些示例数据的方式。我不能用它来存储整个字符串,因为我没有编写 CSV 的最终导入,我只需要编写它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 2017-05-17
  • 2021-02-13
  • 2014-10-17
  • 2019-10-01
相关资源
最近更新 更多