Page 1 sur 1

delete ligne d'un fichier text

Posté : 04 janv. 2016, 00:11
par pacphil
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); ?>

Re: delete ligne d'un fichier text

Posté : 04 janv. 2016, 19:35
par jeremylevy
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));
++

Re: delete ligne d'un fichier text

Posté : 04 janv. 2016, 23:12
par pacphil
je début avec l'écriture dans un fichier tu placerais cela ou et c'est pas un unlink pour supprimer

Re: delete ligne d'un fichier text

Posté : 05 janv. 2016, 00:06
par jeremylevy
Après ton premier fclose() peut-être. unlink() c'est pour supprimer un fichier.

++

Re: delete ligne d'un fichier text

Posté : 06 janv. 2016, 23:04
par pacphil
Sorry de te déranger pour supprimer les ligne les plus anciennes je dirais tout le 100 je vois pas bien comment faire stp?

Re: delete ligne d'un fichier text

Posté : 07 janv. 2016, 19:11
par Ryle
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

Re: delete ligne d'un fichier text

Posté : 08 janv. 2016, 18:32
par pacphil
bonjour merci mais réellement je comprends pas le fonctionement

Re: delete ligne d'un fichier text

Posté : 11 janv. 2016, 17:43
par Ryle
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.