Seb65 Posté 17 Mai 2006 Posté 17 Mai 2006 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 1Texte 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.
smile Posté 17 Mai 2006 Posté 17 Mai 2006 (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é 17 Mai 2006 par smile
TheRec Posté 17 Mai 2006 Posté 17 Mai 2006 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
smile Posté 17 Mai 2006 Posté 17 Mai 2006 J'ai donné le principe ensuite les écritures peuvent différées, je ne l'aurais pas écrit comme ca mais pourquoi pas
NorSeb Posté 18 Mai 2006 Posté 18 Mai 2006 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant