Aller au contenu

Problème avec une condition


Sujets conseillés

Posté

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

Posté

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

Posté

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

Posté (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é par Jeanluc
Posté

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

Posté

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

Posté (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é par Interdit
Posté

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

Veuillez vous connecter pour commenter

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



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