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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ecrire sur la nième ligne d'un fichier texte

par Fredo » 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

par finipe » 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.

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

par Francis ch » 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