Lecture Ecriture de fichiers texte [Résolu]

Signaler
Messages postés
7
Date d'inscription
lundi 4 avril 2005
Statut
Membre
Dernière intervention
29 mai 2005
-
Messages postés
3
Date d'inscription
lundi 23 mai 2005
Statut
Membre
Dernière intervention
3 juin 2005
-
Bonjour,

Je me suit mis il y a quelques semaines à PHP et franchement le concept me plait.
Je voudrai lire un fichier texte multilignes pour en extraire des données, modifier ces données et les réengistrer.
Voila globalement mon code.

Le fichier texte contient (par exemple :)

Fruit1 Cerise
Fruit2 Pomme
Fruit3 Poire
Fruit4 Banane

je lit le fichier :

$fp = fopen("c:\Fichier.txt","r");
fseek($fp,1);
$Fruit = fgets($fp);
$parsed = array();
$parsed = explode(" ", $Fruit);
$Fruit = $parsed[1];
fclose($fp);

Dans ma variable $Fruit j'obtient donc Pomme.

Je modifie ma variable Fruit de Pomme en Noix par exemple

$Fruit == "Noix"

et je réecrit mon fichier :

$fp = fopen("c:\Fichier.txt","r+");
fseek($fp,1);
$parsed[1] = $Fruit;
$Fruit = implode(" ",array());
fputs($fp,$Fruit);
fclose($fp);

ma ligne :
Fruit2 Pomme

est modifiée mais le résultat est :

Fruit2 Noixe

ou est l'erreur ?

en fait, je remplace un nombre de caractère mais pas la ligne.

comment faire pour remplacer la ligne

Merci d'avance

Pascal

3 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



mettons que ton fichier se nomme "fichier.txt" et contienne ceci :



Fruit1 Cerise

Fruit2 Pomme

Fruit3 Poire

Fruit4 Banane



tu ouvres ton fichier à l'aide de la fonction file()



$fichier=file('fichier.txt');



$fichier[0] contient la première ligne

$fichier[count($fichier)-1] contient la dernière ligne



bref pour avoir la ligne tu la sélectionne en fonction de son numéro dans le tableau $fichier



Ensuite tu la modifies (mettons que tu veuilles modifier la ligne 2)



$fichier[1]='ma nouvelle ligne';



ensuite tu joins le tableau pour ne former qu'un fichier :



$fichier=implode("\n",$fichier);



ensuite tu enregistres ton fichier :



$fp=fopen('fichier.txt','w+');

fputs($fp,$fichier);

fclose($fp);

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
7
Date d'inscription
lundi 4 avril 2005
Statut
Membre
Dernière intervention
29 mai 2005

Merci pour ta réponse, mon problème est résolu (à cela près que la mise en page n'est plus respectée quand je lit le fichier sous bloc note, mais cela n'est pas grave, j'ai juste modifié :

$fichier[1]='ma nouvelle ligne\n';

et

$fichier=implode($fichier);

à prioris cela me mettait plusieurs \n à la fin de la ligne

je ne sait pas pourquoi.

en tous les cas, le fait de mettre le \n en fin de ligne résoud le problème donc tout est bien.

Merci encore pour ta réponse plus qu'explicite et concise.

Pascal
Messages postés
3
Date d'inscription
lundi 23 mai 2005
Statut
Membre
Dernière intervention
3 juin 2005

ça ma aussi servi, merci beaucoup :)