Page 1 sur 1
Supprimer premiere ligne d'un fichier txt
Posté : 21 juil. 2013, 15:44
par fatalfury
Bonjour,
J'utilise un fichier texte pour stocker les scores d'un jeu en php.
Exemple :
Jerome : 8
Sophie : 3
David : 9
Julien : 6
Pour éviter que ce fichier ne devienne trop lourd, j'aimerais supprimer la première ligne du fichier texte quand le nombre de lignes dépasse 10.
Comment fait-on ?
Si possible sans utiliser la méthode du recopiage (car risque d'effacement intégral en cas de lenteur du serveur).
Re: Supprimer premiere ligne d'un fichier txt
Posté : 22 juil. 2013, 09:42
par schim59
Bonjour,
tu crées un nouveau fichier et tu le renomme après avoir effacé l'ancien.
Mais je trouve que le recopiage par une itération est moins "lourd", non ?
Bonne journée.
Re: Supprimer premiere ligne d'un fichier txt
Posté : 22 juil. 2013, 17:53
par Zahnzao
Salut,
j'avais déjà longuement cherché pour supprimer une ligne X d'un fichier, mais visiblement c'est impossible sans réécrire le fichier.
Pour moi, la meilleure solution reste:
$file = file($filename);
unset($file[0]);
file_put_contents($filename, $file);
Ou alors, passer à mysql

Re: Supprimer premiere ligne d'un fichier txt
Posté : 22 juil. 2013, 22:07
par moogli
ou simplement sqlite si cela est suffisant
@+
Re: Supprimer premiere ligne d'un fichier txt
Posté : 23 juil. 2013, 00:19
par fatalfury
Salut,
j'avais déjà longuement cherché pour supprimer une ligne X d'un fichier, mais visiblement c'est impossible sans réécrire le fichier.
Pour moi, la meilleure solution reste:
$file = file($filename);
unset($file[0]);
file_put_contents($filename, $file);

Intéressant. Tu peux mettre ton script complet, stp ?
Re: Supprimer premiere ligne d'un fichier txt
Posté : 23 juil. 2013, 12:14
par Zahnzao
Complet c'est à dire ?
Cela ne fonctionne pas tel quel ?
$filename="fichier.txt"; // ton fichier
$file = file($filename); // la fonction file, lit ton fichier et met chaque ligne de celui ci dans un tableau
unset($file[0]); // supprime la première ligne du tableau (qui correspond à la première ligne de ton fichier)
file_put_contents($filename, $file); // réinsère les lignes dans le fichier, ça écrase l'ancien fichier.
Après test chez moi fonctionne parfaitement.

Re: Supprimer premiere ligne d'un fichier txt
Posté : 23 juil. 2013, 17:06
par fatalfury
En effet, ça marche. Je pensais que c'est plus lourd que ça.
J'ai ajouté la condition des 10 lignes :
<?
$filename="test.txt"; // nom du fichier
$file = file($filename); // la fonction file, lit le fichier et met chaque ligne de celui-ci dans un tableau
$nbligne = count($file); // compter nb lignes
if($nbligne > 10)
{
unset($file[0]); // supprime la première ligne si le nb de lignes est supérieur à 10
}
file_put_contents($filename, $file); // réinsère les lignes dans le fichier, ça écrase l'ancien fichier.
?>
Pour finir, je ne dois pas fermer le fichier txt avec fclose ?
Re: Supprimer premiere ligne d'un fichier txt
Posté : 23 juil. 2013, 17:11
par AB
Pour finir, je ne dois pas fermer le fichier txt avec fclose ?
Nan, avec les fonctions comme file, file_put_contents, file_get_contents, etc. pas besoin de spécifier que l'on ouvre ou que l'on ferme le fichier, cela se fait automatiquement.