Aller au contenu

Problème avec une condition


kattig

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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]);

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é par Jeanluc
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é par Interdit
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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