Foros del Web » Programando para Internet » PHP »

Como eliminar cierta linea en un TXT ??

Estas en el tema de Como eliminar cierta linea en un TXT ?? en el foro de PHP en Foros del Web. Hola... tengo un script que me agrega palabras en un txt, por ejemplo por medio de un formulario escribo algo y al enviarlo dicha palabra ...
  #1 (permalink)  
Antiguo 27/07/2006, 12:18
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Como eliminar cierta linea en un TXT ??

Hola...
tengo un script que me agrega palabras en un txt, por ejemplo por medio de un formulario escribo algo y al enviarlo dicha palabra o frase se almacena en un archivo de texto de la siguiente forma:

Código:
dato1
dato2
dato3
mas daos
nblablabla
mas blabla
en otra pagina muestro el contenido del txt en un campo select de formulario en el cual escojo que es lo que deseo eliminar, por ejemplo DATO1 o NBLABLABLA, lo que deseo es que en el txt se me borre solo esa linea, que en el caso de en el formulario escojer DATO2 se me elimine del txt y quede asi:

Código:
dato1
dato3
mas daos
nblablabla
mas blabla
Como soy nuevo en php no se como realizarlo, se me ocurre que podria recorrer el txt en busca de coincidencias y borrar la linea, nose, algo asi creo, si alguien sabe como hacerlo se lo agradeceria.
  #2 (permalink)  
Antiguo 27/07/2006, 13:34
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Podrías hacer esto:

Código PHP:
<?php
    
//antepongo ; al dato a borrar por que asi queda mas adelante
    
$borrar=";dato2";
    
//leo el archivo a un array, transformo el array en
    //una cadena separada por ;
    
$cadena=join(";",file("lista.txt"));
    
//reemplazo lo que voy a borrar en la cadena por nada
    
$cadena=str_replace($borrar,"",$cadena);
    
//reeemplazo los ; por saltos de línea
    
$cadena=str_replace(";","\n",$cadena);
    
//escribo la cadena resultante al archivo
    
file_put_contents("lista.txt",$cadena);
?>
  #3 (permalink)  
Antiguo 27/07/2006, 15:58
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
gracias por tu respuesta, voy a probar y te aviso cualquier cosa.
  #4 (permalink)  
Antiguo 27/07/2006, 16:22
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Ya probe el codigo y no me funciona bien, por ejemplo en el select menu me aparecian asi antes de borrar:

Código:
dato1
dato2
dato3
dato4
al aplicar el codigo me elimino el dato2 (por ejemplo) que yo queria pero me separo todos por un espacio y despues me quedo asi:
Código:
dato1



dato3

dato4
con lo que revisando el codigo me di cuenta que estaba esta linea y la modifique para que no me agregue saltos de linea:
Código PHP:
//reeemplazo los ; por saltos de línea
    
$cadena=str_replace(";","\n",$cadena); 
dejandola asi:
Código PHP:
//reeemplazo los ; por nada
    
$cadena=str_replace(";","",$cadena); 
y todo me funciono casi bien, osea el script me elimina el registro que yo deseo pero me deja esa linea vacia, osea si borro el DATO2 y despues reviso el archivo.txt en lugar de quedarme asi:
Código:
dato1
dato3
dato4
me queda asi:
Código:
dato1

dato3
dato4
Como lo puedo hacer para que a parte de borrarme el contenido de la linea, tambien me borre la linea??
  #5 (permalink)  
Antiguo 27/07/2006, 17:01
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Con que programa estas revisando el archivo txt? notepad por ejemplo, no interpreta bien los saltos de linea (\n).
  #6 (permalink)  
Antiguo 27/07/2006, 17:29
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
en este momento estoy trabajando directamente con el servidor de hosting (pandela.com) y ahi mismo estoy revisando el txt ademas que tambien los muestro en un menu del formulario e igual me aparecen con saltos de linea.
Como puse en mi post anterior, ya solucione el tema de los saltos de linea modificando esto:
Código PHP:
//reeemplazo los ; por saltos de línea 
    
$cadena=str_replace(";","\n",$cadena); 
por esto:
Código PHP:
//reeemplazo los ; por nada 
    
$cadena=str_replace(";","",$cadena); 
y se me soluciono esa parte del problema pero igual me quedaba una linea en blanco, osea se eliminaba el contenido de esa linea pero no la linea.
Modifique un poco tu codigo para dejarlo de la siguiente manera y me funciona perfecto.
Código PHP:
<?php
$seccion
=$_POST["seccion"];
    
$borrar=$seccion;
     
$cadena=file("secciones.txt");
    
$cadena=str_replace($borrar."\n","",$cadena);
    
file_put_contents("secciones.txt",$cadena);
Header("Location: 1.php");
?>
Ahora al borrar algun dato me los borra bien y despues cuando quiero ver el resultado en un select menu me los presenta bien, un dato por cada <option> del menu y el que habia borrado ya no aparece ni tampoco como un <option></option> vacio.

para explicarte bien lo que quiero hacer completamente es lo siguiente:
tengo un pequeño formulario con un campo de texto en el cual ingreso el nombre de una seccion, por ejemplo noticias, novedades, etc, dicho dato lo almaceno en un txt, en otro formulario ingreso noticias y selecciono a travez de un menu select en que seccion quiero guardarlo, ya sea en las mismas Noticias o puede ser en Novedades, etc, hasta ahi todo bien, el problema era que si yo queria eliminar una seccion no sabia como acerlo pero con el codigo que me has dado y luego de unas pruebas y modificaciones he logrado dar exactamente con lo que queria, ahora me surgio 1 probema, en el formulario que tengo para ingresar las secciones y almacenarlas en el txt me funciona bien al escribir cualquier cosa pero si ingreso el numero 0 solamente me tira error 404 de pagina no encontrada, no se lo que pase, a que se deba, he hecho varios intentos, si escribo otra cosa me funciona bien pero si escribo solamente un 0 me pasa eso.
No se si ese problema lo deba plantear abriendo otro post o puedo aprovechar este mismo??

Saludos y gracias por todo

PD. el tema principal de lo que trataba este post ya lo he solucionado, con la ayuda de claudiovega
  #7 (permalink)  
Antiguo 21/01/2010, 07:29
 
Fecha de Ingreso: enero-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Como eliminar cierta linea en un TXT ??

Muchas Gracias Por la ayuda! Lo modifique para remplazar una linea en un documento! Me sirvioo mucho muy buenas infos!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:48.