【问题标题】:fputcsv and Notepadfputcsv 和记事本
【发布时间】:2010-03-04 10:02:46
【问题描述】:

我使用 fputcsv 生成 csv 文件,它工作得很好,但是当我在记事本 (Windows) 中查看 csv 文件时,没有新行。所有行都在 1 行中,并且应该在换行符的位置有一个 sqaure(损坏的字符)。例如,Mac 上的其他编辑器可以正确显示带有中断的行。

有什么办法可以解决这个问题,因为需要导入 CSV,而且导入器也看不到换行符。

【问题讨论】:

    标签: php csv


    【解决方案1】:

    http://bugs.php.net/bug.php?id=46367

    这是 PHP 中一个已知且未修复的错误。

    在他们修复它之前,请尝试使用 fwrite($fp, '"'.implode('","', str_replace('"', '""', $data_array)).'"'.PHP_EOL);

    【讨论】:

      【解决方案2】:

      尝试使用 Notepad++,它可以更正确地处理 \n 换行符。

      另外,请参阅此响应客栈fputcsv 文档:http://lv.php.net/manual/en/function.fputcsv.php#90883

      【讨论】:

      • 我必须在响应中检查该函数。谢谢!
      【解决方案3】:

      \r\n 放在代码中每一行的末尾。

      其他快速修复: 在写字板中打开生成的文件,应该可以正常显示,按Cntr+S,现在在记事本中打开,它应该也可以正常显示。

      编辑:

      根据下面的cmets,修改你的代码如下:

      $orders_newlines = array();
      
      foreach($orders as $value)
      {
        $orders_newlines[] = $value . "\r\n";
      
      }
      

      现在在循环中使用$orders_newlines 变量而不是$orders

      希望对您有所帮助。

      【讨论】:

      • 在 foreach 中我有这个: $fp = fopen('exports/export_'.date('Y-d-m-H-i-s').'.csv', 'a'); fputcsv($fp, $orders,';');你会把那些\r\n放在哪里?
      • fputcsv($fp, $orders . "\r\n",';');
      • 警告:fputcsv() 期望参数 2 是数组,字符串在 /httpd.www/stuff/export.php 中给出。不得不说 $orders 是一个数组。
      • @rkj:查看我更新的答案并在fputcsv 中使用$orders_newlines 变量而不是$orders 变量。
      • @sarfraz 这使得每个分号分隔符都在一个新行上,但至少我现在在记事本中也有换行符。我会尝试修改它以满足我的需要。谢谢你:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 2013-03-08
      • 2019-02-03
      相关资源
      最近更新 更多