【问题标题】:remove unwanted space in start of CSV file generated using PHP删除使用 PHP 生成的 CSV 文件开头不需要的空间
【发布时间】:2014-05-06 12:26:51
【问题描述】:

我正在使用 PHP 生成 CSV 文件。我正在做的是

<?php

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename="myfile.csv");
header("Pragma: no-cache");
header("Expires: 0");

echo "mycontent";
exit;

它使用我的内容生成 CSV 文件,但是在 CSV 内容的开头添加了两个额外的空格(我猜是制表符空格)。我已经使用 trim() 和其他相关函数来删除空格,但它没有帮助。

示例输出(带空格):

    first_column,second_column
first_data,second_data

但应该是:

first_column,second_column
first_data,second_data

请帮助我如何删除 CSV 文件开头的这两个额外空格。

【问题讨论】:

  • 我也使用过其他的 CSV 生成方法,如 fputs、fputcsv、fopen,但所有方法都在开始时添加了额外的空间
  • 这个问题需要更多的实质内容,到目前为止,如果我们不知道问题出在哪里,我们没有办法尝试解决它..?
  • 感谢 Tristan 的关注,您还需要什么?
  • 您的 PHP 必须输出这些字符。我猜它们是 PHP 文件中的空格,或者可能是 byte order mark(BOM 很可能 看起来 像输出中的几个空格。)除非您发布实际代码,或者至少是一个实际重现问题的小型工作示例,我们不太可能提供更多帮助。

标签: php html csv file-io removing-whitespace


【解决方案1】:

我遇到了同样的问题,经过数小时的搜索终于找到了解决方案。在标头修复它之后添加:ob_end_clean()...

header('Content-Disposition: attachment; filename="sample.txt"');
ob_end_clean();

我以前从未使用过 ob_end_clean(),但看起来它可以清理缓冲区和其他似乎会导致以这种方式创建以供下载的文件开头出现双空格的东西。我只找到了解决方案,因为它是与此问题无关的示例代码的一部分,因此希望将来有人会偶然发现这篇文章,解决问题并继续他们的生活!

【讨论】:

  • 从技术上讲,有人可以解释为什么这样做吗?哈哈哈
  • 为我节省了几个小时。我所做的只是在一个系统上从 PHP 5.2 升级到 5.6,在另一个系统上升级到 7.4,两者都在 .zip 下载文件中添加了额外的空间前缀。
  • 也节省了我几个小时...谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
相关资源
最近更新 更多