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 :

Modification de fichier txt


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut Modification de fichier txt
    Bonjour,

    Je voudrais modifier un fichier txt, qui a comme contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $fr['1']['1']['3'] = 'Ligne1';
    $fr['1']['1']['3'] = 'Ligne2';
    $fr['1']['1']['3'] = 'Ligne3';
    $fr['1']['2']['6'] = 'Ligne4';
    $fr['1']['2']['6'] = 'Ligne5';
    $fr['1']['2']['6'] = 'Ligne6';
    $fr['1']['2']['6'] = 'Ligne7';
    $fr['1']['2']['6'] = 'Ligne8';
    $fr['1']['2']['6'] = 'Ligne9';
    $fr['1']['3']['1'] = 'Ligne10';
    comment puis je les changer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT INTO TABLE nomTable VALUES ('Ligne1');
    INSERT INTO TABLE nomTable VALUES ('Ligne2');
    INSERT INTO TABLE nomTable VALUES ('Ligne3');
    INSERT INTO TABLE nomTable VALUES ('Ligne4');
    INSERT INTO TABLE nomTable VALUES ('Ligne5');
    INSERT INTO TABLE nomTable VALUES ('Ligne6');
    INSERT INTO TABLE nomTable VALUES ('Ligne7');
    INSERT INTO TABLE nomTable VALUES ('Ligne8');
    INSERT INTO TABLE nomTable VALUES ('Ligne9');
    INSERT INTO TABLE nomTable VALUES ('Ligne10');
    Merci a vous

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Je te le fais parce que ce serait plus long à expliquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $array = file('fichier.txt',FILE_IGNORE_NEW_LINES);
     
    $tab = array();
     
    foreach ($array as $value)
    {
    	$tab_split = explode(' = ',$value);
    	if(isset($tab_split[1])) $tab[] = 'INSERT INTO TABLE nomTable VALUES ('.rtrim($tab_split[1],';').');'."\n";
    }
     
    file_put_contents('fichier2.txt',$tab);
    ?>

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    difficil a comprendre, le resultat obtenu:

    INSERT INTO TABLE nomTable VALUES ('Ligne1'; );INSERT INTO TABLE nomTable VALUES ('Ligne2'; );
    j'ai fait un espace entre ; et ) pour ne pas avoir l'icone clin d'oeil

    le resultat souhaitable est:

    INSERT INTO TABLE nomTable VALUES ('Ligne1');
    INSERT INTO TABLE nomTable VALUES ('Ligne2');
    sans le ; dans les VALUES et un retour a la ligne a la fin de chaque INSERT

  4. #4
    Membre éclairé Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Par défaut
    le code marche bien pour moi aussi

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Bon l'explication :

    L'emploi de "file" est pour récupérer le résultat du fichier texte dans un tableau.

    L'emploi de "FILE_IGNORE_NEW_LINES" est pour supprimer les symboles de retour ligne qui se trouvent à la fin de chaque ligne.

    Donc ensuite on liste le tableau récupéré avec un foreach.

    On fait un explode sur le " = " pour récupérer ce qui nous intéresse dans le deuxième élément du tableau résultant (cf fonction explode). Bon pour faire la même chose on pourrait utiliser une autre technique avec strrchr (cf doc) mais là n'est pas le problème.
    A ce niveau là on devrait récupérer Pour supprimer le dernier ";" de cette expression je me sert de la fonction "rtrim", cf doc.
    rtrim supprime le dernier caractère indiqué en paramètre uniquement si ce caractère se trouve en dernière position. C'est pour cette raison qu'au début du code j'ai utilisé FILE_IGNORE_NEW_LINES avec file pour supprimer les retour ligne, qui lors de la récupération sont le dernier caractère de chaque ligne. Une fois les retours lignes supprimés on devrait donc avoir ";" en dernière position et rtrim les supprime, tu me suis ?

    Le reste est simplement la reconstruction de la chaine que tu souhaite en sortie avec à la fin un "\n" pour indiquer un retour ligne.

    Je passe sur file_put_contents (cf doc).

    Le problème est que si je recopie ton exemple de fichier texte et que je teste le code que je t'ai indiqué et bien ça fonctionne correctement chez moi.
    Il m'est donc difficile de te dire d'où vient le problème... le fichier texte que tu utilises doit être différent au niveau des caractères cachés etc..

    Cela dit pour supprimer le dernier ";" à la place d'utiliser rtrim tu peux utiliser des fonctions genre strstr (avec l'option TRUE). A toi de faire des essais car étant donné que je n'ai pas les mêmes résultats chez moi...

    Contrôle par des affichages à chaque étape pour mieux comprendre et faits afficher les caractères cachés pour bien les visualiser dans tes fichiers.

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    Merci ABCIWEB

    je veux juste supprimer le ; avant )

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    peut on utiliser preg_replace??

  8. #8
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    des remarques??

    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
     
    <?php
    $array = file('1.php',FILE_IGNORE_NEW_LINES);
    //$array = file('1.php');
    //print_r($array);
     
    $tab = array();
    //print_r($tab);
     
    foreach ($array as $key=>$value)
    {
    	//echo 'key: '.$key.'<br />';
    	//echo 'val: '.$value.'<br />';
    	$tab_split = explode(' = ',$value);
    	//print_r($tab_split);
     
    	//echo $tab_split[1].'<br>';
    	$chaine = preg_replace('#^\'#','INSERT INTO tableName VALUES (\'', $tab_split[1]);
    	//echo $chaine.'<br />';
    	$new_chaine = preg_replace('#\';#','\');', $chaine);
    	echo $new_chaine.'<br />';
    	//if(isset($tab_split[1])) $tab[] = 'INSERT INTO TABLE nomTable VALUES ('.rtrim($tab_split[1],';').');'."\n";
    }
    ?>

  9. #9
    Expert confirmé

    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
    Par défaut
    il sort d’où ton fichier txt a la base ?

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    il sort d’où ton fichier txt a la base ?
    c'est un fichier cree ayant des lignes, une ligne apres l'autre, qui est en local

  11. #11
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par isitien Voir le message
    c'est un fichier cree ayant des lignes, une ligne apres l'autre, qui est en local
    t'as la main dessus ?

  12. #12
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    t'as la main dessus ?
    oui exactement

Discussions similaires

  1. [Compiler] Modification de fichiers .txt dans une application faite par Compiler
    Par maxcentrale dans le forum MATLAB
    Réponses: 9
    Dernier message: 12/03/2014, 17h16
  2. Modification de fichier . txt en VB6
    Par ULRECH dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/10/2010, 18h10
  3. modification enregistrement fichier txt
    Par cath2123 dans le forum VB.NET
    Réponses: 8
    Dernier message: 02/06/2010, 08h12
  4. Ouverture et modification d'un fichier .txt
    Par Marty McFly dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/05/2006, 09h57
  5. Affichage de fichier.txt et modification des couleurs
    Par Furius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/12/2005, 17h33

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