Skip to content

Instantly share code, notes, and snippets.

@kingkool68
Last active July 29, 2020 20:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kingkool68/f003a26dc8b1440c8354606ffa511daf to your computer and use it in GitHub Desktop.
Save kingkool68/f003a26dc8b1440c8354606ffa511daf to your computer and use it in GitHub Desktop.
How to dynamically generate a CSV with PHP
<?php
$filename = 'test.csv';
$now = gmdate( 'D, d M Y H:i:s' );
header( 'Expires: Tue, 03 Jul 2001 06:00:00 GMT' );
header( 'Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate' );
header( "Last-Modified: {$now} GMT" );
// force download
header( 'Content-Type: application/force-download' );
header( 'Content-Type: application/octet-stream' );
header( 'Content-Type: application/download' );
// disposition / encoding on response body
header( "Content-Disposition: attachment;filename={$filename}" );
header( 'Content-Transfer-Encoding: binary' );
ob_start();
$file = fopen( 'php://output', 'w' );
$headers = array( 'Fee', 'Fi', 'Fo', 'Fum' );
fputcsv( $file, $headers );
$data = array(
array(
'One',
'One',
'One',
'One',
),
array(
'Two',
'Two',
'Two',
'Two',
),
array(
'Three',
'Three',
'Three',
'Three',
),
);
foreach ( $data as $row ) {
fputcsv( $file, (array) $row );
}
fclose( $file );
echo ob_get_clean();
die();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment