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

PHP & Base de données Discussion :

Remplacer chaque ligne d'un fichier texte par PHP


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Remplacer chaque ligne d'un fichier texte par PHP
    Bonjour,

    je m'en remets à vous pour trouver une solution à mon problème. J'ai un fichier texte avec 3 nombres (chacun est sur une ligne différente), et une classe qui permet de récupérer ces trois nombres. Je souhaiterais pouvoir les remplacer par d'autres nombres que j'aurais récupérer, mais rien n'y fait.
    Voici le code :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
      CLASS checkUpdates
      {
     
        PUBLIC FUNCTION __construct(){
          $this->countFolders = fopen('test.txt', 'r+');
        }
     
         PUBLIC FUNCTION fileInitialize($dir){
      		$this->realArray = array();
      		$string = "";
     
              array_push($this->realArray,'1337','1338','1339');
     
              /***********************
              * Lecture sur le Fichier
              ***********************/
              $o = 0;
              fseek($this->countFolders, 0);
              while(!feof($this->countFolders)) {
        	      $string .= fgets($this->countFolders, 4096);
        	      $o++;
        	    }
              $this->checkArray = explode("\n", $string);
     
              # Dans le fichier texte
              $this->all = $this->checkArray[0]; // Extrait le nombre de dossiers au total
              $this->parents = $this->checkArray[1]; // Extrait le nombre de dossiers parents
              $this->children = $this->checkArray[2]; // Extrait le nombre de dossiers enfants
     
     
    	        if($this->all != $this->realArray[0]){ 
    	              fseek($this->countFolders, 0); // Remise du curseur au début du fichier pour écraser les données
    	              fputs($this->countFolders,$this->realArray[0]); // Ajoute le total des dossiers au début du fichier
    	              fputs($this->countFolders,"\n"); 
    	              /*
    	              fseek($this->countFolders, 0);
    	              while(!feof($this->countFolders)) {
    	                //echo $this->realArray[$o];
    	        	      //$replace .= fgets($this->countFolders, 4096); // Récupération des lignes du fichier texte
    	                //fputs($replace,$this->realArray[$o]); // Ajoute le total des dossiers au début du fichier 
    	                //fputs($replace,"\n"); 
    	                //$o++;
    	        	    }
    				*/
    	            $this->exitApp = false; // Si le fichier a été modifié, on continue pour effectuer toutes les opérations sur l'arborescence
    	          }else{
    	            $this->exitApp = true; // Si aucune modification n'a été faite, on arrête le script
    	          }
    	}
     
    }
    Pour information : la variable $this->checkArray contient les données récupérées sur le fichier texte, et la variable $this->realArray contiendrait les valeurs à remplacer.

    Actuellement, lorsque j'utilise ce script, voici le résultat que j'obtiens :

    au lieu d'avoir (dans le fichier texte à l'origine) :

    42
    12
    30

    j'ai :

    13370
    30

    Il a remplacé le 42 par 1337, et le 12 par 0 mais n'a pas sauté de ligne. Comment puis-je faire ?

    En vous remerciant par avance !

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 223
    Points : 15 516
    Points
    15 516
    Par défaut
    le problème est que 1337 est plus grand que "42" et donc il écrase les 2 caractères suivants et donc le saut de ligne

    pour écrire dans le fichier, vous pouvez le faire en une seule fois avec la fonction http://php.net/file_put_contents
    l'écriture se ferait comme cela par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $contenu = implode("\n", $this->realArray);
    file_put_contents("data.txt", $contenu);

Discussions similaires

  1. Remplacer une ligne dans un fichier texte !
    Par toulouz1 dans le forum VBScript
    Réponses: 23
    Dernier message: 19/07/2017, 11h26
  2. Réponses: 3
    Dernier message: 12/10/2008, 18h41
  3. Remplacer une ligne d'un fichier texte par une autre
    Par devalender dans le forum WinDev
    Réponses: 12
    Dernier message: 24/07/2007, 20h51
  4. Remplacer une ligne d'un fichier texte
    Par mullinski dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/07/2006, 19h53
  5. [BATCH] lire chaque ligne d'un fichier texte
    Par bartmarley dans le forum Windows
    Réponses: 13
    Dernier message: 22/04/2005, 22h01

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