1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<?php
//Initialisation du tableau PHP contenant toues les informations sources
$tableau_membre = array(
array("Métayer","Thierry","29/01/81","Masculin","12, rue de l'Etoile 29000 Quimper","\"Titi\""),
array("Bois","Pierre-Emmanuel","","Masculin","2 ter, rue de la Colline 75015 Paris","\"Manu\",\"Numa Sadoul\""),
array("Traissac","Elise","09/05/78","Féminin","Chemin des Poneys 64220 Saint-Jean-Pied-de-Port","")
);
//Uilisation de la fonction header permettant de déclarer le flux csv, sa forme et le nom du fichier
header("Content-type: text/x-csv");
header('Content-Diaposition: attachement; filename="FichierCSV.csv');
//Initialisation du tableau PHP contenant toutes les lignes du fichier CSV
$tableau_csv = array();
//Initialisation de la variable définissant le séparateur des valeurs
$separator = ";";
//Boucle permettant le parcours du tableau des membres, membre par membre
foreach($tableau_membre as $membre) {
//Initialisation du tableau PHP temporaire (réinitialisé pour chaque membre) contenant toutes valeurs CSV d'un membre
$tableau_lignecsv = array();
//Boucle permettant le parcours des informations de chaque membre, valeur par valeur
foreach($membre as $valeur) {
//Initialisation de l'indicateur d'encadrement de la valeur par des doubles quotes
$dblquote_check = 0;
//Traitement d'une valeur contenant au moins une double quote
if(preg_match('#"\""#',$valeur)) {
$valeur = preg_replace('#"\"", "\"\""#', $valeur);
$dblquote_check = 1;
}
//Traitement d'une valeur contenant au moins une virgule
if (preg_match('##',$separator, $valeur)) $dblquote_check = 1;
//Traitement d'une valeur contenant au moins un retour à la ligne
if (preg_match(chr(10),$valeur)) $dblquote_check = 1;
//Si l'indicateur d'encadrement de la valeur par des doubles quote a été positionné à 1, ajout des doubles quote avant et après la valeur
if($dblquote_check==1) $valeur = '"'.$valeur.'"';
//Enregistrement de la valeur "filtrée" d'un membre dans le tableau PHP contenant toutes valeurs CSV d'un membre
$tableau_lignecsv[] = $valeur;
}
//Génération de chaque ligne du fichier CSV en réunissant toutes les valeurs de chaque membre séparées par une virgule
$tableau_csv[] = implode($separator, $tableau_lignecsv);
}
//Génération du flux csv sous sa forme finale en réunissant toutes les lignes du tableau PHP séparées par un retour à la ligne
$output = implode(chr(13).chr(10), $tableau_csv);
//Affichage du flux csv sur la sortie standard permettant d'alimenter le fichier extraction.csv par ce script
print($output);
?> |
Partager