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 certaines lignes d'un fichier ?


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Modification de certaines lignes d'un fichier ?
    Bonjor à tous,

    Dans le cadre d'un projet, j'ai besoin de modifier certaines lignes d'un fichier de config provenant d'un serveur distant, voici un rapide exemple :

    parametre 1=Random_Value
    parametre 2=Random_Value
    parametre 3=Random_Value
    parametre 4=Random_Value
    parametre 5=Random_Value
    parametre 6=Random_Value
    parametre 7=Random_Value

    Et j'ai besoin de modifier la valeur Random_Value aux lignes 2,4 et 7 (par exemple évidemment, mon fichier fait quasiment 700 lignes comme ça)

    J'ai bien pu lire la documentation php mais je suis assez perdu concernant l'usage de fwrite, fputs et consorts, d'autant plus que je débute en PHP

    Donc si quelqu'un ici à une réponse avec un morceau de code qui pourrait m'aider ce serait avec joie

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie ça.

    Code php : 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
     
    <?php
    function remplace(&$posteArray,$nouvelleValeur) {
     $ligne    = explode('=',$posteArray);
     $ligne[1] = $nouvelleValeur;
     $posteArray = implode('=',$ligne); 
    }
    // ----- Lit le fichier
    $array = file('mon_fichier.txt',FILE_IGNORE_NEW_LINES);
     
    // ----- pour voir ce qu'il se passe
    foreach($array as $value) {
     print "$value<br/>";
    }
    // ----- remplace ligne 5
    remplace($array[4],rand(1,1000));
    // ----- remplace ligne 11
    remplace($array[10],rand(1,1000));
     
    // ----- Enregistre le fichier
    file_put_contents('mon_fichier.txt', implode(PHP_EOL,$array));
     
    // actualiser la page plusieurs fois


    mon_fichier.txt
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je n'ai pas encore pu faire tout mes tests cependant, la solution proposée semble fonctionner pour le moment, je tiens au courant.
    Dans tout les cas, merci, cela m'aide beaucoup !

    EDIT :
    J'ai également du mal à comprendre cette ligne, ce serait possible d'avoir plus d'explications ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
     
    // ----- Lit le fichier
    $array = file('mon_fichier.txt',FILE_IGNORE_NEW_LINES);

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Alors, bien qu'en soi la solution proposée fonctionne (elle modifie bien les lignes demandées), il s'avère que certaines lignes se modifient d'elles-même (soit elle s'enlèvent soit elles se rajoutent), ce qui fait que le numéro de ligne indiqué par 'array[]' modifiera certes toujours la ligne indiquée, mais potentiellement une ligne qui ne doit pas être modifiée.

    Pour remettre en contexte rapidement, je dois modifier en PHP un fichier de configuration d'une borne Wi-Fi pour pouvoir faire du Wi-Fi à la demande.
    Y a t-il donc un moyen d'indiquer une ligne via une recherche d'une chaîne de caractères plutôt que par son numéro ? J'ai pu voir qu'il existe des fonctions telles que substr_replace, strpbrk ou encore strtr

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Si tu dois modifier la valeur d’un paramètre, cela peut se faire avec preg_replace.
    Est-ce que le nom de chaque paramètre est unique ?
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui, chaque paramètre à un nom unique, bien qu'ils se ressemblent tous, les noms sont distingués en fonction de leur numérotation (1,2,3...) (en plus du paramètres évidemment)

  7. #7
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie comme ça.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $texte = file_get_contents('mon_fichier.txt');
    // ----- pour voir ce qu'il se passe
    print nl2br($texte);
    // ----- remplace paramètre 10
    $parametre = 10;
    $valeur    = rand(1,1000);
    $texte = preg_replace("/(param$parametre)=(.*)/","$1=$valeur",$texte);
    // ----- remplace paramètre 1
    $parametre = 1;
    $valeur    = rand(1,1000);
    $texte = preg_replace("/(param$parametre)=(.*)/","$1=$valeur",$texte);
    file_put_contents('mon_fichier.txt', $texte);
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/06/2009, 15h27
  2. [E-03] Supprimer certaines lignes d'un fichier
    Par kokoVBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2009, 17h10
  3. Lire certaines lignes d'un fichier csv
    Par damdam44 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/05/2008, 11h29
  4. Modification d'une ligne d'un fichier
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 20/03/2007, 15h29
  5. Supprimer certaines lignes d'un fichier texte
    Par kek_net dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2006, 11h21

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