kattig Posté 9 Avril 2006 Posté 9 Avril 2006 Bonjour, Je souhaiterais effacer une ligne de mon fichier texte. J'y arrive cependant si mon fichier texte contient par exemple: premier deuxieme troisieme Je fais en sorte de supprimer la deuxième ligne, ce qui me donne: premier troisieme alors que je veux que cela donne: premier troisieme Voici mon code: <?php$fichier=fopen("test.txt","r");$i=0;while(!feof($fichier)){ $f[$i]=fgets($fichier,255); $i=$i+1;}$ligne=$i;fclose($fichier);$f[1]= "";$fichier=fopen("test.txt","w+");for($i=0;$i<$ligne-1;$i++){ if($f[$i] != "") { fwrite($fichier,$f[$i]."\r\n"); }}if($f[$ligne-1] != ""){ fwrite($fichier,$f[$ligne-1]);}fclose($fichier);?> Je pense qu'il ne prendre pas en compte les conditions que je lui ai donné en disant que si le contenu de la ième ligne est non vide alors il faut l'écrire. Sauriez-vous quelle est la raison qui fait que ma condition ne soit pas prise en compte? Je vous remercie d'avance pour votre réponse. kattig
Vincent Posté 9 Avril 2006 Posté 9 Avril 2006 Bonjour, Peut être que le contenu de ta variable n'est pas réellement vide (on peut imaginer qu'il traine un retour chariot quelconque) Essaye de tester avec la fonction empty() sinon pour enlever la variable de ton tableau, essayes : unset($f[1]);
kattig Posté 9 Avril 2006 Auteur Posté 9 Avril 2006 Bonjour Vincent, Je vous remercie pour votre aide [sourire]. Je viens d'essayer avec empty et malheureusement j'ai le même résultat (cela ne prend pas en compte la condition) ... Je ne comprend pas pourquoi cela ne fonctionne pas.. Mon code est pourtant bon, non? kattig
Jeanluc Posté 9 Avril 2006 Posté 9 Avril 2006 (modifié) Le problème n'est-il pas que tu as un double saut de ligne à la fin de chaque ligne et donc que toutes tes lignes vont être affichées en sautant une ligne intermédiaire ? Fais un essai en supprimant la ligne: $f[1]= ""; Cela devrait éclaircir les choses. Jean-Luc P.S. tu peux utiliser rtrim(fgets(...)) au lieu de fgets(...) pour supprimer un saut de ligne. Modifié 9 Avril 2006 par Jeanluc
kattig Posté 9 Avril 2006 Auteur Posté 9 Avril 2006 Bonjour Jean-Luc, Je vous remercie pour votre aide, je suis entrain de faire des essais. Je vous dis tout de suite après si cela fonctionne. Merci encore. kattig
kattig Posté 9 Avril 2006 Auteur Posté 9 Avril 2006 Rebonjour, Je viens d'utiliser la fontion rtrim(fgets(...)) comme vous me l'avez conseillez et cela fonctionne parfaitement [sourire]. Je vous remercie milles fois pour votre aide Je vous souhaite à vous tous une bonne soirée et profitez bien de cette fin d'après-midi. kattig
Interdit Posté 9 Avril 2006 Posté 9 Avril 2006 (modifié) Oui, ou vous pouviez simplement mettre: fwrite($fichier,$f[$i]); sans le "\r\n" ca devrait marcher aussi car votre code est correct. Bon dimanche, Interdit Modifié 9 Avril 2006 par Interdit
kattig Posté 9 Avril 2006 Auteur Posté 9 Avril 2006 Bonjour Interdit, Je vous remercie pour votre aide. Je viens de faire comme vous me l'avez recommendé et cela fonctionne aussi [ravie]. Je pensais que si je ne mettais pas \r\n, cela aurait écrit que sur une seule ligne... Et bien, je crois que je me suis trompée... Merci encore milles fois à vous tous pour votre aide Et bien, je crois que je vais me remettre au travail... Merci encore [sourire] et bonne fin d'après-midi. kattig
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant