league/csv pour PHP : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à la bibliothèque league/csv pour PHP

La bibliothèque league/csv est un outil puissant et pratique pour travailler avec les fichiers CSV (Comma-Separated Values) en PHP. Elle offre aux développeurs une API simple mais flexible pour lire, écrire, traiter et transformer des données CSV. Contrairement aux fonctions PHP natives (fgetcsv, fputcsv), league/csv propose une approche orientée objet, la prise en charge de différents dialectes CSV, la gestion des BOM (Byte Order Mark), le traitement de fichiers volumineux via des itérateurs, et de nombreuses autres fonctionnalités utiles.

Cette bibliothèque fait partie de l'écosystème The League of Extraordinary Packages et est considérée comme la référence de facto pour la gestion des CSV en PHP. Elle est activement maintenue, dispose d'une excellente documentation et est couverte par des tests.

Pourquoi utiliser league/csv ?

  • Simplification de la gestion CSV : Au lieu de gérer manuellement les pointeurs de fichier et les boucles, vous travaillez avec des objets et des méthodes clairs.
  • Sécurité : La bibliothèque gère correctement l'échappement des caractères, les guillemets et les sauts de ligne à l'intérieur des champs.
  • Flexibilité : Prise en charge de différents délimiteurs (virgule, point-virgule, tabulation), caractères d'échappement et délimiteurs de chaîne.
  • Performance : L'utilisation de générateurs (yield) permet de traiter des fichiers de toute taille sans charger l'intégralité du contenu en mémoire.
  • Fonctionnalités : Méthodes intégrées pour la conversion en JSON, HTML, XML, le tri, le filtrage et la transformation de colonnes.

Installation de la bibliothèque

L'installation de league/csv se fait via Composer, le gestionnaire de dépendances pour PHP. Assurez-vous que Composer est installé sur votre système.

Ouvrez un terminal dans le répertoire racine de votre projet et exécutez la commande :

composer require league/csv

Après une installation réussie, un dossier vendor et les fichiers composer.json / composer.lock apparaîtront dans votre projet. Pour inclure la bibliothèque dans votre script PHP, utilisez l'autoloader standard de Composer :

require 'vendor/autoload.php';

use League\Csv\Reader;
use League\Csv\Writer;
use League\Csv\Statement;

Démarrage rapide avec un exemple de code

Créons un fichier CSV simple, écrivons-y des données, puis lisons-les.

Exemple 1 : Écrire des données dans un CSV

<?php
require 'vendor/autoload.php';

use League\Csv\Writer;

// Création d'un objet Writer
$writer = Writer::createFromPath('utilisateurs.csv', 'w+');

// Insertion des en-têtes
$writer->insertOne(['ID', 'Nom', 'Email']);

// Insertion de plusieurs lignes de données
$writer->insertAll([
    [1, 'Jean Dupont', 'jean@exemple.com'],
    [2, 'Pierre Martin', 'pierre@exemple.com'],
    [3, 'Anne Durand', 'anne@exemple.com'],
]);

echo "Le fichier utilisateurs.csv a été créé avec succès !";
?>

Exemple 2 : Lire des données depuis un CSV

<?php
require 'vendor/autoload.php';

use League\Csv\Reader;

// Création d'un objet Reader
$reader = Reader::createFromPath('utilisateurs.csv', 'r');
$reader->setHeaderOffset(0); // Indique que la première ligne contient les en-têtes

// Récupération de tous les enregistrements sous forme de tableaux associatifs
$records = $reader->getRecords();

foreach ($records as $record) {
    echo "ID : " . $record['ID'] . ", Nom : " . $record['Nom'] . ", Email : " . $record['Email'] . "<br>";
}
?>

Méthodes principales de la bibliothèque league/csv

Examinons les méthodes clés offertes par la bibliothèque pour travailler avec les CSV.

1. Reader::createFromPath() et Writer::createFromPath()

Fonction : Crée un objet Reader ou Writer pour travailler avec un fichier situé à un chemin donné.

Paramètres :

  • $path (string) : Chemin vers le fichier.
  • $open_mode (st

Recommendations