delete ligne d'un fichier text

Eléphant du PHP | 257 Messages

04 janv. 2016, 00:11

Bonjour j'aimerais réaliser un delete avec une fichier texte après 100 ligne, je sais pas comme l'on pourrai faire svp?

Code : Tout sélectionner

<?php //Vérification des données $pseudo = (isset($_POST["pseudo"])) ? $_POST["pseudo"] : NULL; $messtext = (isset($_POST["messtext"])) ? $_POST["messtext"] : NULL; //On créé une variable pour donner un nom au fichier $fichier = "tchat.txt"; //On ouvre le fichier. Si il n'existe pas il sera créé automatiquement $fichier_a_ouvrir = fopen ($fichier, "a+"); //On écrit dans le fichier fwrite($fichier_a_ouvrir, '<div class="bordure"><b>'.$pseudo.' :</b> '.$messtext.'</div>'); //On ferme la connexion fclose ($fichier_a_ouvrir); //On ouvre le fichier en lecture $fichier_a_ouvrir = fopen ($fichier, "r"); //On lit son contenu $contenu_du_fichier = fgets($fichier_a_ouvrir, 1024); //On affiche son contenu echo $contenu_du_fichier; //On ferme la connexion fclose ($fichier_a_ouvrir); ?>

Petit nouveau ! | 9 Messages

04 janv. 2016, 19:35

Salut,

Tu peut avoir toutes les lignes avec file() :
$lignes = file($fichier_a_ouvrir, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
Tu peux couper avec array_slice() :
$lignes = array_slice($lignes, 0, 100);
Et mettre à jour avec file_put_contents() :
file_put_contents($fichier_a_ouvrir, join("\n", $lignes));
++
EvenID - La manière la plus simple d'envoyer des e-mails à vos utilisateurs en PHP.

Eléphant du PHP | 257 Messages

04 janv. 2016, 23:12

je début avec l'écriture dans un fichier tu placerais cela ou et c'est pas un unlink pour supprimer

Petit nouveau ! | 9 Messages

05 janv. 2016, 00:06

Après ton premier fclose() peut-être. unlink() c'est pour supprimer un fichier.

++
EvenID - La manière la plus simple d'envoyer des e-mails à vos utilisateurs en PHP.

Eléphant du PHP | 257 Messages

06 janv. 2016, 23:04

Sorry de te déranger pour supprimer les ligne les plus anciennes je dirais tout le 100 je vois pas bien comment faire stp?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 janv. 2016, 19:11

Bonjour,

La procédure que t'a donné jeremylevy consiste à lire un fichier texte, copier chacune des lignes dans un tableau php, extraire du tableau php les lignes que tu souhaites conserver et écraser le contenu du fichier avec les lignes extraites uniquement.
$lignes = array_slice($lignes, 0, 100);
te permet d'extraire les 101 premières lignes (de la ligne 0 à la ligne 100 du fichier).
$lignes = array_slice($lignes, count($lignes)-100, count($lignes)-1);
te permet d'extraire les 101 dernières lignes (de nombre de ligne -100 à nombre de lignes -1
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 257 Messages

08 janv. 2016, 18:32

bonjour merci mais réellement je comprends pas le fonctionement

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 janv. 2016, 17:43

Il n'y a pas de fonction te permettant de supprimer des lignes à l'intérieur d'un fichier.

Pour compenser ce manque, tu dois identifier les lignes que tu veux conserver (et non pas celles que tu veux supprimer). Une fois ces lignes identifiées, tu vas écrire un nouveau fichier qui va remplacer le précédent, en ne contenant que les lignes que tu voulais conserver :)

Ainsi, si tu veux supprimer les 100 premières du fichier, il va te falloir identifier et conserver de la 101e à la dernière ligne du fichier et réécrire ton fichier avec ces lignes là uniquement. Tu seras ainsi débarrassé des 100 premières lignes que tu ne voulais pas garder.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...