Comment générer et télécharger des fichiers CSV à partir de scripts PHP : un guide complet
Introduction
La création et le téléchargement de fichiers CSV (Comma-Separated Values) sont souvent nécessaires pour l'échange et l'analyse des données. En PHP, cette tâche peut être accomplie via plusieurs méthodes. Ce guide fournira une procédure détaillée sur la façon d'y parvenir, même pour les programmeurs débutants.
Création de la chaîne CSV
Pour créer une chaîne CSV à partir d'un tableau, chaque L'élément doit être converti en une valeur séparée par des virgules. Ceci peut être réalisé en utilisant la fonction fputcsv() :
$output = fopen("php://temp", "w"); foreach ($array as $line) { fputcsv($output, $line); } fseek($output, 0);
Envoi d'en-têtes HTTP
Pour demander au navigateur d'enregistrer le fichier CSV au lieu de l'afficher, nous besoin d'envoyer des en-têtes HTTP spécifiques :
header('Content-Disposition: attachment; filename="filename.csv"'); header('Content-Type: text/csv');
Génération et téléchargement du CSV Fichier
En combinant les étapes ci-dessus, nous pouvons créer une fonction pour générer et télécharger des fichiers CSV :
function downloadCsv(array $array, string $filename): void { // Create the CSV string $output = fopen("php://temp", "w"); foreach ($array as $line) { fputcsv($output, $line); } fseek($output, 0); // Send HTTP headers header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Type: text/csv'); // Send the CSV file fpassthru($output); }
Vous pouvez utiliser cette fonction pour télécharger des fichiers CSV avec le code suivant :
$array = [ ['id', 'name', 'email'], ['1', 'John', 'john@example.com'], ['2', 'Jane', 'jane@example.com'] ]; downloadCsv($array, 'contacts.csv');
Méthode alternative
Au lieu d'utiliser php://temp, vous pouvez écrire directement dans le tampon de sortie :
function downloadCsv2(array $array, string $filename): void { header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Type: text/csv'); $f = fopen('php://output', 'w'); foreach ($array as $line) { fputcsv($f, $line); } }
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!