Modifier la nième ligne d'un fichier texte

Modifier la nième ligne d'un fichier texte - PHP - Programmation

Marsh Posté le 26-10-2005 à 17:32:39    

Ecrir sur la nième ligne d'un fichier texte
 
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

Reply

Marsh Posté le 26-10-2005 à 17:32:39   

Reply

Marsh Posté le 26-10-2005 à 18:22:25    

http://www.nexen.net/docs/php/anno [...] .fseek.php

Citation :

fseek modifie le curseur de position dans le fichier handle . La nouvelle position mesurée en octets  ...


 
T'es certain que ta premiére ligne fait 257 octets de long? (255 caractéres + CR + LF) Moi, je vois qu'un seul caractére donc 3 octets en comptant la fin de ligne.
Quand au fwrite, ca veut pas dire "remplace moi ma ligne par telle ligne en poussant le reste plus loin" mais "écrase moi ce qui se trouve à cet endroit là même si on déborde sur la suite".
Si tu veux remplacer une ligne, il faut commencer par lire le fichier puis le travailler en mémoire et le réécrire entiérement (ou au mieux depuis le premier endroit modifié jusqu'a la fin du fichier en suprimant la fin du fichier si besoin)


Message édité par omega2 le 26-10-2005 à 18:23:35
Reply

Marsh Posté le 26-10-2005 à 18:53:41    

Je vais avoir exactement le meme probleme.
 
Imaginons sur un serveur un fichier texte contenant :

Code :
  1. param1     =    1
  2. param2     =     toto
  3. ipAddress =     192.168.1.1


 
Si j'appelle http://xxx.xxxx.xx/change.php?param1=2
Il faut que je mette la nouvelle valeur du parametre dans le fichier...
 
Je sens que je vais m'amuser a faire ca...
A moins qu'il existe deja des bout de code tout fait ?


---------------
char table[] = {112,114,105,110,116,102,40,34,37,99,37,99,37,99,34,44,49,49,48,44,49,48,56,44,57,57,41,59,0}; char* tablePtr = table; while(*tablePtr) printf( "%c",*tablePtr++ );
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed