Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modifier un fichier texte

    18 mars 2019 à 14:48:45

    Bonjour,

    J'ai un projet scolaire à réaliser,

    Je dois créer un formulaire WEB. Les valeurs renseignées dans le formulaire doivent modifier différentes lignes dans mon fichier texte  je ne sais pas trop comment m'y prendre pour sélectionner une ligne précise et la modifier. 

    • Partager sur Facebook
    • Partager sur Twitter
      18 mars 2019 à 15:01:15

      Bonjour,

      Tout dépend de comment tu sélectionne ta ligne.

      Tu as par exemple fseek pour donner une position à ton curseur.

      Sinon moi je supprimais une ligne en fonction de son contenue de cette manière :

      function SupprLigne($fichier, $texte){
      file_put_contents($fichier, str_replace($texte."\n", "", file_get_contents($fichier)));
      }

      Mais tu peux modifier le code que j'utilise pour écrire autre chose à la place de la ligne, c'est simplement une piste.

      • Partager sur Facebook
      • Partager sur Twitter

      Call me Spaceman

        18 mars 2019 à 15:34:10

        je débute en PHP.

        justement je ne sais pas comment sélectionner une ligne 

        j'ai essayer ca 

        $fichier = 'test.txt';

        $modif = 'abcd';

        function Ouvrirfichier ($fichier, $modif) 

        {

        $fp = fopen($fichier , 'r+');

        //$taille = filesize($fichier);

        //$data = fgets($fp,$taille); 

        $modif = fseek($fp, 10);

        $ecriture= fwrite($fp, $modif);

        }

        • Partager sur Facebook
        • Partager sur Twitter
          18 mars 2019 à 15:52:26

          Pour mettre du code, tu dois utiliser le bouton "Code" ( </> ) juste au dessus de l’éditeur.

          Enfaîte il nous faudrait plus d'explication sur ce que tu veux. Est-ce que ton fichier texte est vide au début ? Tu veux écrire seulement à la fin de ton fichier ? Tu veux modifier une ligne qui se trouve à une position particulière dans le document ? Connais-tu le contenue de la ligne que tu modifie ? Est-ce que la ligne que tu veux modifier est unique dans le document ? etc..

          • Partager sur Facebook
          • Partager sur Twitter

          Call me Spaceman

            18 mars 2019 à 16:06:47

            Mon projet consiste a modifier un fichier de configuration pour  routeur.

            Je voudrais que ce formulaire 



            Modifie cette ligne dans mon fichier texte 

            ligne 189 interface Vlan1

            ligne 190 description LAN-Interface

            ligne  191 ip address x.x.x.x y.y.y.y 

            x.x.x.x = Adresse IP

            y.y.y.y = Masque sous réseaux

            par exemple :

            ip address 192.168.1.254 255.255.255.0

            • Partager sur Facebook
            • Partager sur Twitter
              18 mars 2019 à 16:36:33

              D'accord c'est tout de suite plus clair. 

              Ce qui me vient en tête là est d'avoir un autre fichier texte qui à la place de ces 3 lignes ai :

              189. PHP_INTERFACE

              190. PHP_DESCRIPTION

              191. PHP_IPADDRESS

              Tu copie ce fichier à la place de celui que tu souhaite modifier. Puis tu modifie ces trois lignes comme ceci :

              function ModifierLigne($fichier, $texte, $new){
              file_put_contents($fichier, str_replace($texte."\n", $new, file_get_contents($fichier)));
              }
              
              $interface='interface '.$Hostname;
              ModifierLigne($fichier, 'PHP_INTERFACE', $interface);
              $description='description LAN-Interface';
              ModifierLigne($fichier, 'PHP_DESCRIPTION', $description);
              $address='ip address '.$AddressIp.' '.$Masque;
              ModifierLigne($fichier, 'PHP_ADDRESS', $address);

              • Partager sur Facebook
              • Partager sur Twitter

              Call me Spaceman

                18 mars 2019 à 23:18:00

                La variable  $new fait référence au concaténation utilisé plus bas  ?

                $fichier -> ficher de configuration

                $texte -> fichier  avec 

                189. PHP_INTERFACE

                190. PHP_DESCRIPTION

                191. PHP_IPADDRESS

                Et je comprends pas comment il peut modifier des valeurs sans lui avoir renseigné une ligne ou un caractère :/

                • Partager sur Facebook
                • Partager sur Twitter
                  19 mars 2019 à 7:59:36

                  Tu comprendra pet-être mieux comme ça :

                  function ModifierLigne($fichier, $Ligne_à_modifier, $Nouvelle_ligne){
                      $Fichier_à_modifier = file_get_contents($fichier);  //On lit tout le fichier et on le met dans une chaine de caractère.
                      $Nouveau_texte = str_replace($Ligne_à_modifier."\n",$Nouvelle_ligne,$Fichier_à_modifier); //On remplace les lignes dans le fichier lu en fonction du contenu de la ligne
                      file_put_contents($fichier,$Nouveau_texte); //On écrit le nouveau texte dans le fichier
                  }
                  Pour expliquer, nous avons un fichier comme ceci :
                      PHP_INTERFACE
                      PHP_DESCRIPTION
                      PHP_IPADDRESS
                  
                  Nous récuperons ce texte sous cette forme :
                      $Fichier_à_modifier = 'PHP_INTERFACE\nPHP_DESCRIPTION\nPHP_IPADDRESS';
                  
                  Et si nous savons que ce que nous voulons modifier 'PHP_DESCRIPTION', alors on remplace dans la chaine de caractères
                  'PHP_DESCRIPTION' par le texte souhaité (ici $Nouvelle_ligne) :
                  
                      $Nouveau_texte = 'PHP_INTERFACE\ndescription LAN-Interface\nPHP_IPADDRESS\n'
                  
                  Et reste plus qu'a écrire la chaine de caractère modifier dans le fichier.

                  Tu devras faire attention avec les '\n', tu devras surement en ajouter à la fin de la nouvelle ligne.


                  • Partager sur Facebook
                  • Partager sur Twitter

                  Call me Spaceman

                    19 mars 2019 à 14:49:04

                    je bloque le fichier texte ne se modifie pas.

                    je lui ai mis des valeurs pour les tests mais rien ne change;

                    les fichiers XML ne sont pas meilleurs pour les interactions ??

                    Fichier function

                    $fichier = 'vlan1.txt';
                    
                    
                    function ModifierLigne($fichier, $Ligne_à_modifier, $Nouvelle_ligne)
                    {
                        $Fichier_à_modifier = file_get_contents($fichier);  
                        $Nouveau_texte = str_replace($Ligne_à_modifier."\n",$Nouvelle_ligne,$Fichier_à_modifier); 
                        file_put_contents($fichier,$Nouveau_texte); 
                    }
                     
                    $name = 'Vlan1';
                    $AddressIp = '192.168.1.26';
                    $Masque = '255.255.255.0';
                    //str_replace(search, replace, subject)
                    $php_interface = 'PHP_INTERFACE';
                    $php_desc = 'PHP_DESCRIPTION';
                    $php_addr = 'PHP_ADDRESS';
                    
                    $interface='interface '.$name;
                    ModifierLigne($fichier, $php_addr, $interface."\n");
                    $description='description LAN-Interface';
                    ModifierLigne($fichier, $php_desc, $description."\n");
                    $address='ip address '.$AddressIp.' '.$Masque;
                    ModifierLigne($fichier, $php_addr, $address."\n");

                    Fichier vlan1.txt

                    fichier de conf


                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 mars 2019 à 15:36:08

                      En effet ce que je t'ai donné ne marche pas du tout désolé

                      J'ai été faire un petit tour sur la doc php de str_replace et grâce au exemple j'ai fais ça :

                      <?php
                      $fichier_temp='temp/vlan1.temp';
                      $fichier_conf='vlan1.txt';
                      
                      $name = 'Vlan1';
                      $AddressIp = '192.168.1.26';
                      $Masque = '255.255.255.0';
                      
                      $tab_ligne=array('PHP_INTERFACE', 'PHP_DESCRIPTION', 'PHP_ADDRESS');
                      $tab_conf=array('interface '.$name, 'description LAN-Interfac', 'ip address '.$AddressIp.' '.$Masque);
                      
                      $Fichier_à_modifier = file_get_contents($fichier_temp);
                      $Nouveau_texte=str_replace($tab_ligne,$tab_conf,$Fichier_à_modifier);
                      file_put_contents($fichier_conf,$Nouveau_texte);



                      • Partager sur Facebook
                      • Partager sur Twitter

                      Call me Spaceman

                        19 mars 2019 à 16:07:58

                        fichier de conf

                        189 interface vlan1 190 description LAN_Inteface 191 ip address x.x.x.x y.y.y.y

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 mars 2019 à 16:13:37

                          Je ne comprend ?

                          (Ayant personnellement des problème pour éditer je répond pour que tu puisses refaire en cas d'erreur)

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Call me Spaceman

                            19 mars 2019 à 16:26:07

                            Le dernier message a été envoyer quand j'ai rechargé la page. Je suis en train de faire le teste avec le nouveau code

                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 mars 2019 à 16:33:22

                              Pas de soucis j'attend le retour :)
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Call me Spaceman

                                19 mars 2019 à 17:03:07

                                Pour créer le fichier temp il faut utiliser fopen("fichier.tmp" ,"a") ? Ou il y a un éditeur qui permet cette création ?

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 mars 2019 à 18:50:05

                                  Comment ça ? Tu travail sur quoi ?

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Call me Spaceman

                                    19 mars 2019 à 22:00:01

                                    Le file_get_contents ($fichier_temp); N'arrive pas à ouvrir le fichier temp

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 mars 2019 à 7:23:15

                                      Soit tu ne l'as pas mis dans le bon répertoire ou soit tu à un problème de droit sur ton fichier
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Call me Spaceman

                                        20 mars 2019 à 10:11:28

                                        Désolée ton code fonctionne très bien ! Quand j'ai créé le fichier j'ai mis vlan1.tmp au lieu de vlan1.temp donc j'avais une erreur , manque d'attention de ma part quand j'ai voulue refaire le code . Je galérai depuis pas mal de temps sur cette partie Merci pour l'aide !!!!!!!!!!!!!!!!!!!!

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          23 mars 2019 à 1:22:37

                                          ERF en faisant toutes les modifs pour mon fichier de conf. Je viens de voir qu'au lieu de remplacer les lignes dans mon fichier , cela effaçaient la totalité du fichier pour rajouter les lignes

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Modifier un fichier texte

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown