Foros del Web » Programando para Internet » PHP »

Borrar linea especifica de un archivo

Estas en el tema de Borrar linea especifica de un archivo en el foro de PHP en Foros del Web. Buen día a todos; Tengo un código que me ayuda a borrar lineas especificas de un archivo. Lo que hace es lo siguiente: -Localiza el ...
  #1 (permalink)  
Antiguo 18/07/2012, 19:54
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 9 años
Puntos: 2
Pregunta Borrar linea especifica de un archivo

Buen día a todos;

Tengo un código que me ayuda a borrar lineas especificas de un archivo.
Lo que hace es lo siguiente:
-Localiza el archivo lo lee
-Copia todo el archivo
-Borra la linea
-Vuelve a pegar el resto del archivo ya sin la linea que borre.

Código PHP:
if(file_exists($archivo)) {
        
$file fopen($archivo,'r');
        while(!
feof($file)) { 
            
$name fgets($file);
            
$lineas[] = $name;
        }
        
fclose($file);
}
unset(
$lineas[0]);
$lineas array_values($lineas);

$file fopen($archivo"w");
foreach( 
$lineas as $linea ) {
    
fputs($file"$linea" );

fclose$file );

Necesito que este código me haga lo siguiente pero no lo logro.
Ya intente poniendo un fputs antes del foreach pero no lo consigo me escribe 2 veces lo que quiero y lo va multiplicando mal.
Imaginando que el archivo que quiero modificar contiene números:
1
2
3
4
5
6
7
8
9
Quiero que me borre la linea 1 (YA LO HACE), y después me inserte un 0 en su lugar (LO QUE NECESITO).
Dejandome el archivo:
0
2
3
4
5
6
7
8
9

Espero que puedan ayudarme.
Saludos!

Última edición por ZonaRLX; 18/07/2012 a las 19:56 Razón: Lograr mas comprensión.
  #2 (permalink)  
Antiguo 19/07/2012, 02:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 10 meses
Puntos: 574
Respuesta: Borrar linea especifica de un archivo

Yo lo replantearia todo y usaria file() en lugar de fopen en la linea 2 de tu codigo. Eso te creara un array con todas las lineas, solo tendras que substituir el elemento buscado en el array y luego reescribes entero el fichero con el contenido del array.(Lo mismo que haces pero con menos lineas de codigo)

Por otro lado

Código PHP:
Ver original
  1. unset($lineas[0]);

Manual
Cita:
unset — Destruye una variable especificada
no substituye el contenido de $lineas[0] por 0 sino que elimina el primer elemento del array...

Código PHP:
Ver original
  1. $lineas[0]=0

Esto si mete un cero en la linea cero.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 19/07/2012 a las 02:29
  #3 (permalink)  
Antiguo 19/07/2012, 12:28
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 9 años
Puntos: 2
Pregunta Respuesta: Borrar linea especifica de un archivo

Cita:
Iniciado por quimfv Ver Mensaje
Yo lo replantearia todo y usaria file() en lugar de fopen en la linea 2 de tu codigo. Eso te creara un array con todas las lineas, solo tendras que substituir el elemento buscado en el array y luego reescribes entero el fichero con el contenido del array.(Lo mismo que haces pero con menos lineas de codigo)

Por otro lado

Código PHP:
Ver original
  1. unset($lineas[0]);

Manual
no substituye el contenido de $lineas[0] por 0 sino que elimina el primer elemento del array...

Código PHP:
Ver original
  1. $lineas[0]=0

Esto si mete un cero en la linea cero.
QUIMFV mil disculpas y gracias por tu aporte pero lo intento y no me queda el código espero me puedas ayudar.
Saludos!
  #4 (permalink)  
Antiguo 19/07/2012, 13:31
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 9 años
Puntos: 2
De acuerdo Respuesta: Borrar linea especifica de un archivo

Cita:
Iniciado por ZonaRLX Ver Mensaje
QUIMFV mil disculpas y gracias por tu aporte pero lo intento y no me queda el código espero me puedas ayudar.
Saludos!
Código PHP:
if(file_exists($archivo)) {
        
$file fopen($archivo,'r');
        while(!
feof($file)) { 
            
$name fgets($file);
            
$lineas[] = $name;
        }
        
fclose($file);
}
unset(
$lineas[0]);
$lineas array_values($lineas);
// GUARDAMOS
$file fopen($archivo"w");
    
fwrite($file"0\n");
foreach( 
$lineas as $linea ) {
    
fputs($file"$linea" );

fclose$file );

Ya lo arregle puse un fwrite antes del foreach...

Saludos y gracias...

Etiquetas: borrar+linea, de+un+archivo, especifica
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:43.