Aller au contenu

Supprimer des données dans un fichier texte


Sujets conseillés

Posté

Bonsoir,

Je n'arrive pas a supprimer une ligne voir plusieurs dans un fichier texte.

Je voudrais par exemple supprimer la seconde ligne de mon fichier.

Mon fichier texte est structuré de cette façon :

Texte sur ligne 1

Texte sur ligne 2

Texte sur ligne 3

Etc...

Pour lire la première ligne pas de soucis :

$ligne1=fgets($fp,1024);

Idem pour ligne 2 :

$ligneé=fgets($fp,2048);

( Une ligne dans un fichier texte équivant à 1024 octets (= 1024 caractères = 1 Ko) )

Comment faire pour supprimer par exemple la ligne 2 ?

Merci par avance.

Posté (modifié)

Le mieux peut etre est d'ouvrir ton fichier et de le lire ligne par ligne, d'ajouter le contenu dans une variable en sautant la ligne 2 (ne pas la prendre en compte), puis ensuite de reecrire le contenu de ton fichier (l'ecraser), fermer ton fichier et le tour est joué :)

Modifié par smile
Posté

Bonsoir,

exactement...tu as un exemple de ce procédé avec cette fonction (qui n'est pas de mon cru) :

function cutline($filename,$line_no=-1) { 
 $strip_return=false;
 $data=file($filename);
 $pipe=fopen($filename,'w');
 $size=count($data);
 $skip = ($line_no==-1 ? $skip=$size-1 : $skip=$line_no-1);
 for($line=0;$line<$size;$line++) {
   if($line!=$skip) {
     fputs($pipe,$data[$line]);
   } else {
     $strip_return=true;
   }
 return $strip_return;
}

Source: http://codewalkers.com/getcode.php?id=199

Posté

J'ai donné le principe ensuite les écritures peuvent différées, je ne l'aurais pas écrit comme ca mais pourquoi pas :)

Posté

Bonjour,

Pour lire la première ligne pas de soucis :

$ligne1=fgets($fp,1024);

Idem pour ligne 2 :

$ligneé=fgets($fp,2048);

( Une ligne dans un fichier texte équivant à 1024 octets (= 1024 caractères = 1 Ko) )

Il me semble que la valeur de 1024 octets, valeur par défaut certes, n'est qu'une valeur arbitraire. La longueur des lignes d'un fichier texte n'est pas systématiquement de 1Ko ! En fait elle est de 1 à ... un caractère marquant la fin de la ligne.

Juste pour te faire remarquer que ton code de lecture des lignes ci-dessus est faux ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...