Maison >développement back-end >tutoriel php >Comment télécharger un fichier CSV à partir d'un script PHP ?

Comment télécharger un fichier CSV à partir d'un script PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-09 12:42:02903parcourir

How to Download a CSV File from a PHP Script?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn