Cet article vise à fournir une solution complète pour créer et télécharger un Fichier CSV (Comma-Separated Values) à partir d'un tableau PHP. En tant que programmeur débutant, vous aurez peut-être besoin d'aide pour implémenter cette fonctionnalité.
Pour générer des lignes CSV à partir de votre tableau PHP, vous pouvez utiliser la fonction fputcsv() intégrée, qui convertit les tableaux en chaînes formatées adaptées au CSV :
$f = fopen("tmp.csv", "w"); foreach ($array as $line) { fputcsv($f, $line); }
Pour lancer un téléchargement de fichier à partir du navigateur, l'envoi des en-têtes HTTP appropriés est crucial. L'un de ces en-têtes est :
header('Content-Disposition: attachment; filename="filename.csv";');
Cet en-tête informe le navigateur que la réponse contient une pièce jointe avec le nom de fichier spécifié.
Combiner le CSV génération de ligne et en-tête HTTP, vous pouvez créer une fonction de téléchargement de CSV :
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { // Open a memory file for efficient handling without temporary files. $f = fopen('php://memory', 'w'); // Generate CSV lines and write them to the memory file. foreach ($array as $line) { fputcsv($f, $line, $delimiter); } // Reset the file pointer to begin sending the file. fseek($f, 0); // Set CSV-related HTTP headers. header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="'. $filename . '";'); // Output the generated CSV lines to the browser for download. fpassthru($f); }
Pour utiliser cette fonction, transmettez simplement votre tableau et le nom de fichier souhaité :
array_to_csv_download(array( array(1, 2, 3, 4), // First row array(1, 2, 3, 4) // Second row ), "numbers.csv");
Au lieu d'écrire dans un fichier mémoire, vous pouvez également utiliser php://output comme descripteur de fichier, éliminant ainsi le besoin de recherche de fichier :
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="'. $filename . '";'); // Open the php://output stream for direct output. $f = fopen('php://output', 'w'); foreach ($array as $line) { fputcsv($f, $line, $delimiter); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!