Suppression de ligne

Neokrome -  
 Neokrome -
Bonjour,

Je suis face à un problème depuis ce matin!
Je suis novice en php.
J'ai un fichier log.txt qui contient un certains nombre d'entrée, j'aimerai faire un script PHP qui determine le nombre de ligne, et si elle sont supérieur à 30, il supprime la 1ere entrée, et ainsi de suite (par une boucle While)

<?php
	 error_reporting(0);									
	$fichier = fopen("log.txt", "r"); 
	$contenu_fichier = file_get_contents('log.txt');
	$nb_ligne = substr_count($contenu_fichier, "\n");
	echo $nb_ligne;

	while ($nb_ligne < 30)
	{
    unset($nb_ligne[1]); 

	}
	fclose ($fichier);
	
   ?>

2 réponses

  1. Utilisateur anonyme
     
    Salut salut,

    Tu n'es pas très loin mais il faut réécrire dans le fichier, et il faut que tu supprimes plus d'une ligne si plus d'une ligne ce sont insérées. Avec ça ça devrait fonctionner :

    $filePath = 'log.txt';
    $lignes = file($filePath); 
    
    $count=count($lignes);
    if($count>30){
    //recherche le nombre de ligne à supprimer
    	$rslt=$count-30;
    	for($i=0;$i<$rslt;$i++){
    	unset($lignes[$i]);
    	}
    }
    
    $str="";
    foreach($lignes as $value){
    	$str.=$value;
    }
    $handle = fopen($filePath, 'w+'); 
    fwrite($handle, $str); 
    fclose($handle); 

    0
  2. Neokrome
     
    Super, merci beaucoup!
    Etonnant que PHP.net n'aille pas mis une fonction pour faire ca x)
    A bientot!
    0