PHP - Borrar lineas de Archivo txt

 
Vista:

Borrar lineas de Archivo txt

Publicado por jmuoz (21 intervenciones) el 15/05/2014 19:44:58
Buenas tardes, tengo un script donde delimito un archivo el cual obtiene ciertos valores en las posiciones que yo le asigne y me lo muestra en una tabla sin mayor inconveniente, el problema esta en la tabla ya que me aparecen valores que no requiero, se encuentran tanto al inicio como al final de la tabla son lineas que no necesito, logre quitar las primeras con fseek();, pero las ultimas no lo eh logrado, espero puedan darme una pista de como quitar lineas de un txt.
Dejo parte del codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function abrir(){
	    $sap=fopen("Archivos/archivo.txt",'r+');    //a+crea nuevo
        $i=1;
       fseek($sap,652);                //Comenzar a leer desde una posicion 286
        while (!feof($sap)) {
 
        	$linea=fgets($sap);
        	 $lineas[$i][1] = substr($linea,53,10);
             $lineas[$i][2] = substr($linea,64,10);
             $lineas[$i][3] = substr($linea,78,19);
             $lineas[$i][4] = substr($linea,99,3);
             $lineas[$i][5] = substr($linea,171,3);
 
             $i++;
 
          }
           fclose($sap);
           unset($lineas[50]);
 
 echo '<table border=1 id="Table1">';
 echo '<tr>
       <th>Fecha  </th>
       <th> Doc </th>
       <th> Importe en M </th>
       <th> ML </th>
       <th> NUmero </th>';
 
 foreach ($lineas as $l) {
 echo'<tr>
        <td>'.$l[1].'</td>
        <td>'.$l[2].'</td>
        <td>'.$l[3].'</td>
        <td>'.$l[4].'</td>
        <td>'.$l[5].'</td>
     </tr>';
 }
 echo '</table>';
}
De antemano gracias, que tengan buen dia.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Borrar lineas de Archivo txt

Publicado por xve (6935 intervenciones) el 15/05/2014 20:30:47
Hola jmuoz, no entiendo muy bien donde tienes el problema... en principio, en la variable $lineas, pones todas las lineas que quieres pintar, no entiendo porque te salen lineas de mas...

Si lo que quieres es por ejemplo, mostrar únicamente 10 lineas desde la posición indicada por seek(), puedes hacerlo simplemente te con un condicional dentro del bucle while... algo así:

1
2
if($i>10)
    breack;

Coméntanos si esto te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Borrar lineas de Archivo txt

Publicado por jmuoz (21 intervenciones) el 16/05/2014 06:25:24
En lo que mencionas si tienes razon trate de implementar no me quedo o lo hice mal estuve buscando y encontre un codigo el cual lee las lineas del archivo txt y borra las que no requiero solo que me borra solo una y lo que me interesa es que borre determinado numero de lineas que se encuentran ya sea al principio del archivo o al final, dejo el codigo para que puedan observar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
    // Obtener cada línea en un array:
    $aLineas = file("Archivos/prueba.txt");
    //print_r($aLineas);
 
    echo "<p>CONTENIDO DEL ARCHIVO</p>";
    echo "<p>=====================</p>";
    // Mostrar el contenido del archivo:
    foreach( $aLineas as $linea )
        echo $linea."<br/ >";
    echo "<p>Borrando la tercera línea...</p>";
    // Borrar el tercer elemento del array (la tercera línea):
    array_splice($aLineas, 2, 1);
 
    //print_r($aLineas);
 
    // Abrir el archivo:
     $archivo = fopen("Archivos/prueba.txt","c+");
    // Guardar los cambios en el archivo:
     foreach( $aLineas as $linea )
         fwrite($archivo, $linea);
    echo "<p>CONTENIDO DEL ARCHIVO</p>";
    echo "<p>=====================</p>";
    // Mostrar el contenido del archivo:
    foreach( $aLineas as $linea )
        echo $linea."<br/ >";
     fclose($archivo);
?>

array_splice($aLineas, 2, 1); esta parte del codigo lo que hace es borrar una linea, de esta manera se puede ver mas claro todo el archivo linea por linea logro borrar una linea pero tambien quiero borrar de la linea 15 ala 30 un ejemplo, espero me pueda dar entender, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Borrar lineas de Archivo txt

Publicado por jmuoz (21 intervenciones) el 18/05/2014 05:28:45
El archivo tiene estas caracteristicas:
NO 9292992929 CXC - JAjaksdnsakchasljmakñdalsd
Sociedad sdjhsajdncjksadklsa

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| |PENDIENTE |101699167 | |SA |30.04.2014|30.04.2014|40| 0000000000|MXN | | |'5256780024167691 |T024 |
| |888123 |1105178870| |ZG |13.05.2014|13.05.2014|50| 1'10101012|MXN | |101885817 |RECEPCION |T004 |

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| * | | | | | | | | | | | | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| ** Cuenta 9292929292 | | | | | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*
| | | | |

Con el codigo que mostre mas arriba elimina las lineas que no requiero y queda de esta manera:
| |PENDIENTE |101699167 | |SA |30.04.2014|30.04.2014|40| 0000000000|MXN | | |'5256780024167691 |T024 |
| |888123 |1105178870| |ZG |13.05.2014|13.05.2014|50| 1'10101012|MXN | |101885817 |RECEPCION |T004 |

Lo que tengo dudas es recorrer todo y que me muestre el codigo sin tener que poner el array_splice($aLineas, 2, 1); o como implementarlo se que tengo q tomar el foreach no comprendo como hacerlo espero puedan darme una idea de como hacerlo, de antemano muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar