Lecture Ecriture de fichiers texte

Résolu
pascalstras Messages postés 7 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 29 mai 2005 - 29 mai 2005 à 11:56
Jantes Romeu Messages postés 3 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 3 juin 2005 - 30 mai 2005 à 16:02
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

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
29 mai 2005 à 13:35
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>
3
pascalstras Messages postés 7 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 29 mai 2005
29 mai 2005 à 21:52
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
0
Jantes Romeu Messages postés 3 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 3 juin 2005
30 mai 2005 à 16:02
ça ma aussi servi, merci beaucoup :)
0
Rejoignez-nous