Probleme php

emixammax Messages postés 29 Statut Membre -  
Heliotte Messages postés 1561 Statut Membre -
Bonjour, je suis en train de faire un script pour modifier une ligne dans un fichier texte. Le probleme c'est que ca modifie bien mais quand j'essaye de reecrire dans le fichier ca ne modifie pas. voici mon code

if ($monfichier = fopen("fichier.txt", "r")) {
            $contenu = fread($monfichier, filesize("fichier.txt"));
            $contenu = explode(PHP_EOL, $contenu); /* PHP_EOL contient le saut à la ligne utilisé sur le serveur (\n linux, \r\n windows ou \r Macintosh */
            fclose($monfichier);
			
			
            for ($i = 0; $i <count($contenu); $i++) {
				
                 str_replace("test","test32",$contenu[$i]); 
            }
			
            $contenu = array_values($contenu); /* Ré-indexe l'array */
			
            /* Puis on reconstruit le tout et on l'écrit */
            $contenu = implode(PHP_EOL, $contenu);
			
			
            $monfichier = fopen("fichier.txt", "w+");
            fwrite($monfichier, $contenu);
            fclose($monfichier); // On ferme le fichier
        } else {
            echo "impossible d'ouvrir le fichier";
        }


A voir également:

2 réponses

Heliotte Messages postés 1561 Statut Membre 92
 
1) Je pense que
$contenu = array_values($contenu); /* Ré-indexe l'array */
ne sert à rien dans ce cas, car il indexe les valeurs numériques .. qui sont déjà dans cet ordre !

2) Essaie en donnant deux noms de variables à "$contenu"
Par exemple:
- "$contenu1", ARRAY qui contiendra tout le fichier
- "$contenu2", STRING qui rassemble les éléments de ton tableau en une seule et unique chaîne !
Dis-nous si ça fonctionne !
0
emixammax Messages postés 29 Statut Membre
 
C'est bon ca a marcher avec cette methode mais maintenant je voudrais modifier plusieur ligne dans mon fichier texte mais je n'y arrive toujours pas ca me duplique mes ligne avec l'ancienne ligne et la nouvelle.
0
Heliotte Messages postés 1561 Statut Membre 92
 
Peux-tu montrer ton nouveau code ?
0
emixammax Messages postés 29 Statut Membre
 


function ModifFichier() 
 { 
   $array = array();  
    
   if ($monfichier=fopen("fichier.txt", "r")) { 
            $contenu=fread($monfichier, filesize("fichier.txt")); 
   $contenu = explode(PHP_EOL, $contenu); 
            fclose($monfichier); 
            for ($i=0;$i<count($contenu);$i++)  
   { 
     $array.=str_replace('test','test1',$contenu[$i]).PHP_EOL;   
     
                
            } 

            /* Puis on reconstruit le tout et on l'écrit */ 
            $monfichier = fopen("fichier.txt", "w+"); 
            fwrite($monfichier, $array); 
            fclose($monfichier); // On ferme le fichier 
        } else { 
            echo "impossible d'ouvrir le fichier"; 
        } 
   

 }
0
Heliotte Messages postés 1561 Statut Membre 92
 
J'ai regardé ton code de plus près:
1) Cela n'a peut-être pas son importance, mais pour mes tests, je l'ai enlevé :
.PHP_EOL;
de
$array.=str_replace('test"','test1',$contenu[$i]).PHP_EOL;

2) Es-tu tu certain que tu trouves plusieurs fois cette chaîne de caractères dans ton fichier d'entrée ?
test"
avec la double quote ?
0