使用fgetcsv和fputcsv进行读写

时间:2014-12-15 18:18:51

标签: php csv fgetcsv fputcsv

我有第三方来源,我来自哪里" csv"文件。我在引用中写了它,因为它说它是一个csv文件,但基本上它不是。

所以我接受了那个主要的源文件,然后阅读并将数据放入" PROPER" csv文件。

读取和写入很好,但问题是当它保存正确引用的数据是在脚本文件本身上写入。例如,如果我的php文件名是" fixcsv.php"然后我将可下载文件作为" fixcsv.php"。

我的代码

$headings = array('HID');
$handle = fopen("MonC1.csv", "r");
$data = fgetcsv($handle, 0, ";",'"');
$fh = fopen('php://output', 'w');
ob_start();
fputcsv($fh, $headings);
// Loop over the * to export
if (! empty($data)) {
  foreach ($data as $item) {
     // echo $item;
     fputcsv($fh, array($item));
  }
}
$string = ob_get_clean();

$filename = 'csv_' . date('Ymd') .'_' . date('His');

// Output CSV-specific headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment filename=\"$filename.csv\";" );
header("Content-Transfer-Encoding: binary");

exit($string);

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

你的Content-Disposition在错误的地方有一个分号(per the spec)。应该是:

header("Content-Disposition: attachment; filename=\"$filename.csv\" );