Maison  >  Article  >  développement back-end  >  Comment créer et télécharger des fichiers CSV à partir de scripts PHP ?

Comment créer et télécharger des fichiers CSV à partir de scripts PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-12 20:28:02215parcourir

How to Create and Download CSV Files from PHP Scripts?

Création et téléchargement de fichiers CSV à partir de scripts PHP

Introduction

Pour améliorer les fonctionnalités du site Web, vous pouvez rencontrer des scénarios dans lesquels vous Vous devez exporter les données de vos tableaux PHP vers des fichiers CSV pour les télécharger par les utilisateurs. Cependant, en tant que programmeur débutant, comprendre comment exécuter cette tâche peut s’avérer difficile. Cet article propose un guide complet pour atteindre cet objectif efficacement.

Création du fichier CSV

Pour générer le fichier CSV à partir de votre tableau PHP, vous pouvez utiliser le dans la fonction fputcsv() :

$f = fopen("tmp.csv", "w");
foreach ($array as $line) {
    fputcsv($f, $line);
}

Configuration HTTP En-têtes

Pour déclencher la boîte de dialogue « Enregistrer sous » dans les navigateurs, vous devez spécifier les en-têtes HTTP appropriés :

header('Content-Disposition: attachment; filename="filename.csv"');

Combiner les deux processus

En combinant la création du fichier CSV et la configuration de l'en-tête HTTP, vous pouvez générer ce qui suit function:

function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") {
    // Open file in memory
    $f = fopen('php://memory', 'w');
    
    // Generate CSV data
    foreach ($array as $line) {
        fputcsv($f, $line, $delimiter);
    }
    
    // Set headers
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    
    // Output file
    fpassthru($f);
}

Utilisation

Pour utiliser cette fonction, vous pouvez simplement fournir votre tableau PHP et un nom de fichier :

array_to_csv_download(array(
    array(1, 2, 3, 4),
    array(1, 2, 3, 4)
), "numbers.csv");

Méthode alternative

Pour des performances améliorées, vous pouvez utiliser php://output au lieu de php://memory et éliminez l'opération de recherche :

function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") {
    header('Content-Type: application/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    
    // Open output stream
    $f = fopen('php://output', 'w');
    
    // Generate CSV data
    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!

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