IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupération fichier csv [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 107
    Points : 52
    Points
    52
    Par défaut Récupération fichier csv
    Bonjour à tous,
    Je débute en php et je me décide à poster après avoir longuement cherché, j'essaye de comprendre un script de récupération de fichier csv. J'ai du remplacer la fonction ereg par preg_match mais j'ai toujours cette erreur qui s'affiche :
    Warning: preg_match() expects parameter 2 to be string, array given in C:\wamp\www\BasePHP\FichiersCSV\FichierCSV.php on line 36
    Je vous joins le code, merci d'avance pour l'aide que vous aurez la gentillesse de m'apporter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    L'erreur dit tout : ligne 36, $valeur est un tableau (c'est le retour d'un preg_match) alors que la fonction attend une chaine de caractères.

    A mon avis, la ligne au dessus, tu voulais plutot ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (preg_match("#$separator#", $valeur)) $dblquote_check = 1;
    Sortir une expression régulière est d'ailleurs inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strpos($valeur, $separator) !== FALSE) $dblquote_check = 1;
    Même chose ligne 36 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strpos($valeur, chr(10)) !== FALSE) $dblquote_check = 1;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 107
    Points : 52
    Points
    52
    Par défaut
    Ca marche. Merci beaucoup pour ton aide très rapide.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tes données viennent d'une base ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération fichier CSV après ouverture de session utilisateur
    Par chevalierepee dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 18/06/2013, 21h02
  2. Réponses: 6
    Dernier message: 04/08/2010, 11h13
  3. Récupération d'un fichier csv
    Par sverdo dans le forum Général Python
    Réponses: 2
    Dernier message: 08/02/2010, 11h25
  4. [MySQL] pas de récupération du fichier csv
    Par sinifer dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/05/2009, 16h58
  5. Récupération fichier .csv
    Par Justin_C dans le forum Langage
    Réponses: 5
    Dernier message: 06/02/2007, 00h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo