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 :

str_replace sur un csv


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de nimbus_77
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Par défaut str_replace sur un csv
    Bonsoir,

    j'inserre avec LOAD DATA INFILE un fichier csv dans ma base, sauf que je dois reformater dans le tableur mes valeurs avant introduction : ni virgules, ni espaces ce qui m'amène à perdre en exactitude.

    Je cherche depuis longtemps à utiliser str_replace, et si j'y arrive sur une chaine de carractères, je n'y arrive pas sur un fichier de type csv, à moins d'utiliser une fonction BASH ce qui me semble lourd.

    Si quelqu'un peut m'orienter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		$filename = array("../../../fichier/efs.csv");
    		$efs_c = str_replace($filename, ".","");
    		$efs_cs = str_replace($filename, " ", "");
    		$efs_csv = str_replace($filename, ",", ".");
     
    // NE SERT PAS DEPUIS MON MSI (utile depuis les excels du TAF)--->>       LINES TERMINATED BY '\r\n'
    /* insertion */
    $requete1 = "LOAD DATA LOCAL INFILE '../../../fichier/efs.csv'  .....................
    Je dois d'abord remplacer les '.' par 'rien' les 'espaces' par 'rien' , enfin les ',' par des 'points' .

    Quelque chose m'échape ...
    Merci de vos avis

    nimbus

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Salut,

    Une expression régulière serait sûrement plus efficace

    Code php non testé : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $myString = "klqjsdlkjq,asdqsd qmlksdm.
    qsdfqsf,fdqsfù";
    $pattern = "/[\s.,]/m";
    $myString = preg_replace($pattern, '', $myString);

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Cette syntaxe est incorrecte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $efs_c = str_replace($filename, ".", "");
    C'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $efs_c = str_replace(".", "", $filename);

  4. #4
    Membre confirmé Avatar de nimbus_77
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Par défaut Vous avez raison ...
    et les possibilités sont effectives sur une chaine de caractère,

    Mais comme je le disais :
    Je cherche depuis longtemps à utiliser str_replace, et si j'y arrive sur une chaine de carractères, je n'y arrive pas sur un fichier de type csv .....
    [CODE]
    J'applique ce code après la réception du fichier sur la machine et avant l'insertion dans la base ...
    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
     
    // upload du fichier
    if(isset($_POST['inserer']))
    {
    	$content_dir= '../../../fichier/efs.csv' ;
    	$tmp_file = $_FILES['trans']['tmp_name'];
     
    	if( !is_uploaded_file($tmp_file) )
    		{
    		exit("le fichier est introuvable");
    		}
    	$type_file = $_FILES['trans']['type'];
     
    	if( !move_uploaded_file($tmp_file, $content_dir . $name_file ) )
    		{
    		exit("impossible de copier le fichier dans $content_dir");
    		}
    		$filename = "../../../fichier/efs.csv";
    // éviction des .
    $efs_c = str_replace(".", "", $filename);
     
    // Insertion dans la base
    $requete1 = "LOAD DATA LOCAL INFILE '../../../fichier/efs.csv' INTO TABLE `efs4` FIELDS ....//....
    Quelque chose m'échappe et de fait je ne peux le comprendre.

    Merci de vos orientations.

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Ce serait pas plutôt un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $efs_c = str_replace(".", "", file_get_contents($filename) );

  6. #6
    Membre confirmé Avatar de nimbus_77
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Par défaut Pas mieux ...
    j'ai beau lire tous les tutoriels de la terre rien de change ...
    ( j'exagère un peu mais ça ne m'avance pas ...)


    Nimbus

  7. #7
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    C'est pas de cette manière que tu devrais travailler avec les fichiers,

    Si tu essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if file_exists($filename){
      $tmp_file = file_get_contents($filename);
      $tmp_file = str_replace('.','',$tmp_file);
      $tmp_file = str_replace(' ', '',$tmp_file);
      $tmp_file = str_replace(',', '.',$tmp_file);
     
      if(fopen($filename,'w')){
        fputs($filename,$tmp_file);
        fclose($filename);
      }
    }

  8. #8
    Membre confirmé Avatar de nimbus_77
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Par défaut MERCI à tous
    A force de chercher j'ai fini par trouver.

    Vos remarques ont orientés mes (longues) recherche et cela fini tout 'simplement' ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $efs_c = str_replace(",", ".", file_get_contents($content_dir) ); 
    file_put_contents($content_dir, $efs_c);
    J'ai abandonné pour le moment la réduction des espaces,
    en effet il me faut apprendre à dire que je ne veux
    les réduire que dans les 10,11 et 12éme champs de chaque ligne ...

    Pour cela j'attendrai l'an neuf !

    J'ai gagné mon pari de commencer l'année avec des valeurs décimales réelles.

    Merci encore pour votre attention (et pas trop de folie ce soir )

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 15/03/2008, 06h56
  2. Ouverture CSV (DoubleClick sur un .csv)
    Par BenoitM dans le forum Excel
    Réponses: 1
    Dernier message: 07/12/2007, 12h53
  3. [CSV] str_replace et fichier CSV
    Par palmier dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2007, 15h38
  4. Ecriture sur fichier csv
    Par PIMPMAX dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 09/01/2007, 11h55

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