Ecrire sur la nième ligne d'un fichier texte

Francis ch
Invité n'ayant pas de compte PHPfrance

26 oct. 2005, 14:11

Bonjour !

Tout est dans le titre :-)
imaginez un fichier contenant (par exemple) 3 lignes:

Fichier toto.txt
2
9
7

Ce que je cherche a faire c'est de coder quelquechose permettant de modifier la valeur de la nième (disons la deuxième) ligne de
mon fichier texte (sans effacer le contenu des autres lignes).

J'ai essayé ca:
<?

$fichier=fopen("../toto.txt", 'r+'); // ouverture du fichier en lecture et ecriture
fseek ($fichier,257);   // pour me mettre au debut de la deuxième ligne ???
fwrite($fichier, "325"); // écriture de 325 sur la deuxième ligne
fclose( $fichier );

?>
Donc, "ca marche" sauf que ce bout de code me donne ca dans mon fichier texte:

2
9
7


325

donc j'ai ensuite essayé avec différentes valeurs pour fseek (ex: 2,1 ...) mais j'ai pas reussi a ECRIR 325 en remplacement
de la deuxième ligne de mon fichier .... i.e réussir à obtenir cela:

Contenu de toto.txt

2
325
7


Si quelqu'un a une petite idée, elle est bienvenue


Merci,


Francis

Eléphant du PHP | 337 Messages

26 oct. 2005, 14:45

*à prendre avec circonspection, je suis pas sûr du tout*

Regarde du côté de fopen("../toto.txt", 'w+'). Le w remplace le contenu de ton fichier, alors que le r insère.

Eléphanteau du PHP | 20 Messages

26 oct. 2005, 17:53

Salut Francis ch,

Je recherche à faire quelque chose de très similaire à ton problème.

Truc m'a aidé à trouver la solution, mais il faudra que tu adaptes le script. Je trouve que ce n'est pas super comme solution. Ca marche, mais ce n'est pas très élégant. Si tu trouves mieux, je suis preneur...

http://www.phpfrance.com/forums/voir_sujet-9857.php

Fredo