Modifier la nième ligne d'un fichier texte - PHP - Programmation
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)
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 :
|
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 ?
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