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 :

manipulation des données csv


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 118
    Par défaut manipulation des données csv
    Bonjour

    Je veux manipulé les données d'un fichier csv et les reuperers dans un variable de type array() voici mon script php:
    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
    <?php
    function censure($chaine) {
     
    	$row = 1;
    	$censure ="";
    if (($csv = fopen("C:/xampp/htdocs/txtmining/core/censure.csv", "r")) !== FALSE) {//ouverture du fichier
        while (($data = fgetcsv($csv, 1000, ",")) !== FALSE) {
            $num = count($data); // $num reçoi le nombre de champ par ligne
     
            $row++;
            for ($c=0; $c < $num; $c++) {
               $censure.="' ".$data[$c]." ',";// le variable $consure contient une chaine de caractaire qui se compose des données des ligne de fichier csv
     
            }
        }  
    	    fclose($csv);//fermuture de fichier csv
    }	
     
    	$cens='';
    	$cens.=$censure."' ete '";
    	echo $cens."<br/><br/>";// il affiche: ' de ',' a ',' le ',' la ',' est ',' les ',' Les ',' Le ',' La ',' Des ',' des ',' dans ',' pour ',' ete '
    	return trim(str_replace(array($cens), ' ', " $chaine ")); //ici je veux remplacer les éléments de la chaîne par ' '
     
     
    }
    ?>
    Les données CSV:


    le problème ce que si j'ai remplacé:
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(' est ',' qui ',' un ',' que ',' par ',' des ',' pour ', ' une ',' de ',' et ',' il ',' les ', ' sur ', ' Il ', ' la ', ' du ', ' le ', ' dans ', ' en ', ' au ', ' mais ')
    Le code s’exécute sans aucun problème mais dans le cas contraire ça marche pas je sais pas pourquoi?

    aucune message d'erreur n'est afficher sur l’écran mais le traitement ça fonctionne pas?

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    $censure.="' ".$data[$c]." ',";
    Pourquoi tu les enregistre en tant que chaine de caractères et pas dans un tableau directement?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //initialisation
    $censure = array();
      /* [...] plus loin */
      //on stock dans le tableau
    $censures[] = $data[$c];
    pour débuguer et afficher ce qu'il y'a dans ton tableau, utilise var_dump($censures); ou print_r($censures);

  3. #3
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 118
    Par défaut
    l'utilisation des tableaux c'est la meilleur des choses mais un problème se trouve dans cette partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return trim(str_replace($censure, ' ', " $chaine "));
    le tableau $censure ici contiens des chaines non séparer par le virgule.
    comme l'exemple statique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return trim(str_replace(array(' est ',' qui ',' un ',' que ',' par ',' des ',' pour ', ' une ',' de ',' et ',' il ',' les ', ' sur ', ' Il ', ' la ', ' du ', ' le ', ' dans ', ' en ', ' au ', ' mais '), ' ', " $chaine "));
    donc l'utilisation d'un variable tableau me pose un probleme avec ça ' espace chaine1 espace','espace chaine2 espace',....'espace chaine N espace'

    ???

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    pour nettoyer(trim) ton tableau apres le code de gototog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //var_dump($censures);
    array_walk($censures, function(&$value/*, $key*/) { $value = trim($value); });
    //var_dump($censures);

  5. #5
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 118
    Par défaut
    J'ai pas compris çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array_walk($censures, function(&$value/*, $key*/) { $value = trim($value); });
    bon en cas de l’écriture comment on peut faire?

    si je veux ajouter un occurrence d'un mot dans le fichier csv comme ça:
    Nom : image.jpg
Affichages : 56
Taille : 36,6 Ko

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    utilise les librairies prévues a cet effet (PHPExcel par exemple)
    Elles te permettent d'ecrire/lire des fichier excel assez facilement (xls/xlsx/csv). Tu ne codes pas assez proprement pour faire à la main l'écriture/lecture d'un fichier, sans vouloir te vexer bien sur, c'est normal quand on débute.


    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
    <?php
    function censure($chaine) {
     
    $row = 1;
    $censure =array();
     
    if ($csv = fopen("C:/xampp/htdocs/txtmining/core/censure.csv", "r")) {//ouverture du fichier
        while (($data = fgetcsv($csv, 1000, ",")) !== FALSE) {
            $num = count($data); // $num reçoi le nombre de champ par ligne
     
            $row++;
            for ($c=0; $c < $num; $c++) {
               $censure[] =trim($data[$c]);// le variable $consure contient une chaine de caractaire qui se compose des données des ligne de fichier csv. 
              //trim supprime les espaces avant et après une chaine de caractère.
     
            }
        }  
    	    fclose($csv);//fermuture de fichier csv
    }	
     
     
    	$cens[] = 'ete';
    	echo implode(", ",$cens);// il affiche: 'de, a, le, la, est, les, Les, Le, La, Des, des, dans, ete'
    	return $cens
     
     
    }
    ?>

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

Discussions similaires

  1. Manipulation des donnes (perl+oracle)
    Par AmineDev9 dans le forum SGBD
    Réponses: 17
    Dernier message: 14/01/2008, 19h17
  2. [MySQL] importer des données .csv dans BDD MySql
    Par priscillia dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/06/2007, 09h40
  3. Réponses: 4
    Dernier message: 09/06/2007, 23h49
  4. [MySQL] enregistrer des données CSV dans une BDD
    Par NicoO_O dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/11/2006, 23h10
  5. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40

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