Maison > développement back-end > tutoriel php > Comment télécharger par programme des fichiers CSV à partir d'un tableau PHP ?

Comment télécharger par programme des fichiers CSV à partir d'un tableau PHP ?

DDD
Libérer: 2024-11-10 13:33:02
original
957 Les gens l'ont consulté

How to Programmatically Download CSV Files from a PHP Array?

Comment créer et télécharger un fichier CSV à partir d'un script PHP

Présentation

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é.

Génération de lignes CSV

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);
}
Copier après la connexion

En-têtes HTTP à télécharger

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";');
Copier après la connexion

Cet en-tête informe le navigateur que la réponse contient une pièce jointe avec le nom de fichier spécifié.

Rassembler le tout

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);
}
Copier après la connexion

Exemple d'utilisation

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");
Copier après la connexion

Option de sortie alternative

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);
    }
}   
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal