Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: alexiscruz007 en 23 Febrero 2015, 21:40 pm



Título: php scritp para borrar las ultimas 5 lineas de un archivo csv o txt
Publicado por: alexiscruz007 en 23 Febrero 2015, 21:40 pm
Hola amigos necesito en  script que me borre las ultimas 5 lineas de un archivo csv.

He intentado con este codigo

Código
  1. if($_POST['validacion']=="si"){  
  2.    $archivo = './datos.txt';  
  3.    if(file_exists($archivo)) {  
  4.        $file = fopen($archivo,'r');  
  5.        while(!feof($file)) {  
  6.            $name = fgets($file);  
  7.            $lineas[] = $name;  
  8.        }  
  9.        fclose($file);  
  10.  
  11.        // Todas las lineas quedan almacenadas en $lineas  
  12.        // Ahora eliminas la fila 15 por ejemplo, en el array sería la posicion 14 (empezamos por la 0)  
  13.        unset($lineas[14]);  
  14.        $lineas = array_values($lineas);  
  15.        print_r($lineas);  
  16.        // GUARDAMOS  
  17.        $file = fopen($archivo, "w");  
  18.        foreach( $lineas as $linea ) {  
  19.            fwrite( $file, $linea );  
  20.        }  
  21.        fclose( $file );
  22.    }
  23. }



pero no me funciona.

luego unirlo con este para que haga lo que quiero

Código
  1. <?php
  2. $fichero = "mi_fichero.txt";
  3. $filas = file($fichero);
  4. $ultima_linea = count($filas);
  5. $ultima_linea_escritura = $filas[$ultima_linea];
  6. echo "Aqui esta:<br>";
  7. echo "$ultima_linea_escritura";
  8. ?>


gracias de antemano por su ayuda

Mod: Etiquetas GeSHi obligatorias.


Título: Re: php scritp para borrar las ultimas 5 lineas de un archivo csv o txt
Publicado por: engel lex en 24 Febrero 2015, 03:41 am
Código
  1. $fichero = "mi_fichero.txt";
  2. $filas = file($fichero);
  3. $ultima_linea = count($filas);
  4. $ultima_linea_escritura = $filas[$ultima_linea];//error!... la ultima linea es count-1
  5. echo "Aqui esta:<br>";
  6. echo


mi forma sería... (puede tener errores no está revisado)

Código
  1. $fichero=file($dir);
  2. for($i=0;$i<$filas_a_borrar;$i++)
  3.  array_pop($fichero)
  4. $fichero=implode("",$fichero)
  5. $f = fopen($dir,"w");
  6. fwrite($f,$fichero);
  7.