PHP - Gérer les fichiers CSV

Bonjour à tous, futurs mage PHP ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde des fichiers CSV et comment les manipuler en utilisant PHP. En tant que votre enseignant bienveillant en informatique, je promets de rendre cette aventure aussi amusante et éclairante que possible. Alors, sortez vos baguettes virtuelles (claviers), et plongons dedans !

PHP - Handle CSV File

Qu'est-ce qu'un fichier CSV ?

Avant de commencer à coder, comprendre ce avec quoi nous avons affaire. CSV signifie "Valeurs Séparées par une Virgule". C'est un format de fichier simple utilisé pour stocker des données tabulaires, comme des feuilles de calcul ou des bases de données. Chaque ligne du fichier représente une rangée du tableau, et les valeurs de chaque rangée sont séparées par des virgules.

Par exemple, un fichier CSV pourrait ressembler à ceci :

Nom,Âge,Ville
John Doe,30,New York
Jane Smith,25,London
Bob Johnson,40,Paris

Maintenant que nous savons ce qu'est un fichier CSV, apprenons à travailler avec eux en PHP !

La fonction fgetcsv()

Notre premier sortilège pour manipuler les fichiers CSV est la fonction fgetcsv(). Cette fonction lit une ligne d'un fichier et l'analyse en un tableau en utilisant un délimiteur spécifié (généralement une virgule).

Utilisation de Base

Voici un exemple simple de l'utilisation de fgetcsv() :

<?php
$fichier = fopen("data.csv", "r");

while (($données = fgetcsv($fichier)) !== FALSE) {
print_r($données);
}

fclose($fichier);
?>

Décomposons cela :

  1. Nous ouvrons le fichier "data.csv" en mode lecture avec fopen().
  2. Nous utilisons une boucle while pour lire le fichier ligne par ligne.
  3. fgetcsv($fichier) lit une ligne et la convertit en tableau.
  4. Nous affichons chaque tableau avec print_r().
  5. Enfin, nous fermons le fichier avec fclose().

Utilisation Avancée

Maintenant, rendons les choses un peu plus intéressantes ! Que se passe-t-il si notre CSV utilise un délimiteur différent, comme un point-virgule ? Pas de problème ! fgetcsv() a tout prévu :

<?php
$fichier = fopen("data.csv", "r");

while (($données = fgetcsv($fichier, 1000, ";")) !== FALSE) {
echo "Nom: " . $données[0] . ", Âge: " . $données[1] . ", Ville: " . $données[2] . "<br>";
}

fclose($fichier);
?>

Dans cet exemple, nous avons ajouté deux paramètres supplémentaires à fgetcsv() :

  • Le second paramètre (1000) est la longueur maximale de la ligne à lire.
  • Le troisième paramètre (";") spécifie le délimiteur.

Nous formatons également notre sortie pour la rendre plus lisible. N'est-ce pas génial ?

La fonction fputcsv()

Maintenant que nous maîtrisons la lecture des fichiers CSV, apprenons comment les créer ! Entrez fputcsv(), notre sortilège pour écrire des fichiers CSV.

Utilisation de Base

Voici un exemple simple :

<?php
$données = array(
array('Nom', 'Âge', 'Ville'),
array('John Doe', '30', 'New York'),
array('Jane Smith', '25', 'London'),
array('Bob Johnson', '40', 'Paris')
);

$fichier = fopen('new_data.csv', 'w');

foreach ($données as $ligne) {
fputcsv($fichier, $ligne);
}

fclose($fichier);

echo "Fichier CSV créé avec succès !";
?>

Décomposons cela :

  1. Nous créons un tableau de tableaux, où chaque tableau interne représente une rangée dans notre CSV.
  2. Nous ouvrons un nouveau fichier 'new_data.csv' en mode écriture.
  3. Nous parcourons notre tableau de données et utilisons fputcsv() pour écrire chaque rangée dans le fichier.
  4. Nous fermons le fichier et affichons un message de succès.

Utilisation Avancée

Rendons les choses un peu plus stylées et ajoutons quelques options à notre fonction fputcsv() :

<?php
$données = array(
array('Nom', 'Citation Préférée'),
array('Shakespeare', 'Être ou ne pas être'),
array('Einstein', 'L\'imagination est plus importante que la connaissance')
);

$fichier = fopen('quotes.csv', 'w');

foreach ($données as $ligne) {
fputcsv($fichier, $ligne, '|', '"', '\\');
}

fclose($fichier);

echo "Fichier CSV des citations créé avec succès !";
?>

Dans cet exemple, nous utilisons des paramètres supplémentaires de fputcsv() :

  • Le troisième paramètre ('|') définit le délimiteur comme un pipe.
  • Le quatrième paramètre ('"') définit le caractère d'enclosure.
  • Le cinquième paramètre ('\') définit le caractère d'échappement.

Cela est utile lorsque vos données peuvent contenir des virgules ou d'autres caractères spéciaux.

Mettre Tout Ensemble

Maintenant, combinons nos compétences de lecture et d'écriture pour créer un convertisseur de fichiers CSV !

<?php
// Lire à partir d'un CSV séparé par un point-virgule
$fichier_entrée = fopen("input.csv", "r");
$fichier_sortie = fopen("output.csv", "w");

while (($données = fgetcsv($fichier_entrée, 1000, ";")) !== FALSE) {
// Écrire dans un CSV séparé par une virgule
fputcsv($fichier_sortie, $données);
}

fclose($fichier_entrée);
fclose($fichier_sortie);

echo "Fichier CSV converti avec succès !";
?>

Ce script lit un fichier CSV séparé par un point-virgule et écrit son contenu dans un nouveau fichier CSV séparé par une virgule. Magique, n'est-ce pas ?

Conclusion

Félicitations, jeunes mage PHP ! Vous venez d'apprendre les essentiels de la manipulation des fichiers CSV en PHP. Souvenez-vous, la pratique rend parfait, donc n'ayez pas peur d'expérimenter avec ces fonctions. Qui sait ? Vous pourriez devenir le prochain sorcier suprême des CSV !

Voici un tableau de référence rapide des méthodes que nous avons apprises :

Fonction But Syntaxe de Base
fgetcsv() Lire fichier CSV fgetcsv($fichier, $longueur, $délimiteur, $enclosure, $escape)
fputcsv() Écrire fichier CSV fputcsv($fichier, $champs, $délimiteur, $enclosure, $escape)

Bonne programmation, et que vos fichiers CSV soient toujours correctement formatés !

Credits: Image by storyset