Foros del Web » Programando para Internet » PHP »

Eliminar texto de un TXT mediante $_GET

Estas en el tema de Eliminar texto de un TXT mediante $_GET en el foro de PHP en Foros del Web. Hola gente, bueno les comento un poco mi problema ... estoy desarrollando una aplicación y mediante una variable "ips" paso unos datos y los guardo ...
  #1 (permalink)  
Antiguo 13/02/2012, 22:03
 
Fecha de Ingreso: marzo-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Pregunta Eliminar texto de un TXT mediante $_GET

Hola gente, bueno les comento un poco mi problema ... estoy desarrollando una aplicación y mediante una variable "ips" paso unos datos y los guardo en un TXT, cada variable se guarda en un renglon diferente, para eso uso lo siguiente:

Código:
<?php
  $all = file("ip.txt");
  $all[] = $_GET['ips'] . "\r\n";
  $all=implode("", $all);
  file_put_contents("ip.txt", $all);
?>
Hasta acá todo bien, me guarda en el ip.txt la variable pasada desde "ips", el problema es cuando quiero eliminar dicho dato del txt, el codigo que uso es:

Código:
<?php
  $all = file("ip.txt");
  $pos = array_search( $_GET['ips'], $all );
  if ($pos !== FALSE) {
    array_splice($all, $pos, 1);
    $all = implode("", $all);
    file_put_contents("ip.txt", $all);
  }
?>
Cuando lo ejecuto no me borra el dato que le paso desde $_GET['ips'] ... Y si uso este codigo:

Código:
<?php
  $all = file("ip.txt");
  $pos = array_search( $_GET['ips'], $all );
    array_splice($all, $pos, 1);
    $all = implode("", $all);
    file_put_contents("ip.txt", $all);
?>
Me elimina desde el ultimo dato ingresado, hasta el primero, cada ves que lo ejecuto, pero no elimina el dato ingresado desde $_GET['ips'] ... sino que me elimina cualquier dato ... Espero haberme explicado bien, un saludo!
  #2 (permalink)  
Antiguo 13/02/2012, 22:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Eliminar texto de un TXT mediante $_GET

Yo creo que el problema radica en la comparación interna de array_search() es posible que tu arreglo que resulta de file() tenga elementos con espacios, o saltos de linea.

Es por eso que jamás va a encontrar el valor exacto, deberías usar array_map() con trim() sobre dicho array para eliminar caracteres no deseados.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/02/2012, 22:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Eliminar texto de un TXT mediante $_GET

Cita:
Iniciado por pateketrueke Ver Mensaje
Yo creo que el problema radica en la comparación interna de array_search() es posible que tu arreglo que resulta de file() tenga elementos con espacios, o saltos de linea.

Es por eso que jamás va a encontrar el valor exacto, deberías usar array_map() con trim() sobre dicho array para eliminar caracteres no deseados.
Claro, en la parte del agregado de la variable uso salto de linea:

Código:
$all[] = $_GET['ips'] . "\r\n";
Si mas o menos me das una mano arreglando el codigo con la solucion que me das:

Código:
<?php
  $all = file("ip.txt");
  $pos = array_search( $_GET['ips'], $all );
  if ($pos !== FALSE) {
    array_splice($all, $pos, 1);
    $all = implode("", $all);
    file_put_contents("ip.txt", $all);
  }
?>
Porque ando medio "verde" todavía con el tema php, gracias desde ya!
  #4 (permalink)  
Antiguo 13/02/2012, 22:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Eliminar texto de un TXT mediante $_GET

Yo no lo voy a hacer por ti, te sugiero consultar el manual buscando ejemplos de las funciones que te mencioné.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: mediante, txt, variables
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 02:20.