Foros del Web » Programando para Internet » PHP »

Reemplazar una línea en un archivo

Estas en el tema de Reemplazar una línea en un archivo en el foro de PHP en Foros del Web. Hola, mi problema es que tengo el archivo: prueba.txt Cita: 1 2 3 4 5 6 Y quiero reemplazar la j-ésima fila por "a". Intenté ...
  #1 (permalink)  
Antiguo 17/12/2006, 09:51
 
Fecha de Ingreso: julio-2006
Mensajes: 50
Antigüedad: 18 años, 4 meses
Puntos: 0
Reemplazar una línea en un archivo

Hola, mi problema es que tengo el archivo:

prueba.txt
Cita:
1
2
3
4
5
6
Y quiero reemplazar la j-ésima fila por "a".
Intenté con:


Código PHP:
<?php
$f
=fopen("prueba.txt","a+");

for(
$i=0;$linea=fgets($f);$i++) {
    if(
$i==3) {
        
fwrite($f,"aa\r\n");
    }

}
fclose($f);
?>
Pero lo que hace es escribir "aa" al final del archivo.
Hay alguna forma para hacer esto que no sea guardar todo el archivo en variables y después volver a pegarlo con la 4º línea cambiada?

Muchas gracias.
  #2 (permalink)  
Antiguo 17/12/2006, 12:06
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 20 años, 1 mes
Puntos: 7
Re: Reemplazar una línea en un archivo

Si abres el fichero con a+ el puntero siempre está al final de este, tienes que poner r+ para que empieze el fgets desde el principio. De todas formas, no estoy seguro de si te reemplazará o añadirá "aa", creo que esto último... así que probablemente tendrás que pasar por variables.
  #3 (permalink)  
Antiguo 17/12/2006, 14:34
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Re: Reemplazar una línea en un archivo

Puedes utilizar la funcion file que te devuelve un array con todas las filas del fichero. De esta manera, (creo que) tendrás que reescribir todo el fichero pero te ahorrarás un montón de trabajo en buscar la línea de turno.

Un saludo
  #4 (permalink)  
Antiguo 17/12/2006, 20:18
 
Fecha de Ingreso: julio-2006
Mensajes: 50
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Reemplazar una línea en un archivo

Eso he hecho, ocupar un file y luego con fputs volver a escribirlas con la fila modificada.
Y en velocidad, no hay problemas? (lo he hecho con archivos pequeños)

Probé con poner r+ en vez de a+ y inexplicablemente (para mi) ha reemplazado la línea en vez de escribir al lado. Reemplazó la 4ª línea por "a".

Gracias a pintix y a jerkan por sus respuestas.

Última edición por Krunoslav; 17/12/2006 a las 21:05
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 22:01.