Foros del Web » Programando para Internet » PHP »

Buscar un string y eliminar esa linea

Estas en el tema de Buscar un string y eliminar esa linea en el foro de PHP en Foros del Web. Estoy buscando una forma de encontrar una palabra o frase en un fichero, y al encontrarla eliminar esa linea, a ver si alguien puede echarme ...
  #1 (permalink)  
Antiguo 21/10/2006, 12:46
 
Fecha de Ingreso: agosto-2006
Mensajes: 1
Antigüedad: 17 años, 8 meses
Puntos: 0
Buscar un string y eliminar esa linea

Estoy buscando una forma de encontrar una palabra o frase en un fichero, y al encontrarla eliminar esa linea, a ver si alguien puede echarme una mano.
Gracias de antemano y saludos a todo el mundo.
  #2 (permalink)  
Antiguo 21/10/2006, 23:03
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Cita:
Iniciado por tonibandal Ver Mensaje
encontrar una palabra o frase en un fichero, y al encontrarla eliminar esa linea
Aquí les dejo un ejemplo con sus respectivos comentarios para que sepan que es lo que hace el código (esto suponiendo que tienen varias lineas en su .txt):

Código PHP:
<?php
if ( isset ( $_POST['submit'] ) && !empty ( $_POST['buscar'] ) )
{
   
$ruta "prueba.txt"// ruta hacia el archivo
   
$lee file$ruta ); // leemos el archivo

   
$p_buscar $_POST['buscar']; // palabra a buscar y eliminar
   
$guardar ""// nos servirá para imprimir en el archivo los datos con la busqueda ya hecha
   
$contador 0// nos ayudará a saber si se modifico alguna fila

   
foreach ( $lee as $linea)
   {
      
$palabra explode " "$linea ); // separamos las palabras
      
$fila ""// nos ayúdara a guardar los datos de cada fila

      
foreach ( $palabra as $recorre )
      {
         if ( 
strstr $recorre$p_buscar ) ) // si la palabra contiene la palabra que queremos eliminar
         
{
            
$contador += 1// indicamos cuantas coincidencias hubo, aumentando uno por fila
            
$fila ""// no guardamos nada de la fila
            
continue 2// seguimos con la otra fila
         
}
         else
         {
            
$fila .= $recorre." "// agregamos la palabra a la fila
         
}
      }

      
$guardar .= $fila// agregamos los resultados a la fila
      
$inicio strlen$guardar ) -1;
      
$guardar substr_replace $guardar''$inicio); // quitamos el último espacio
   
}

   
$fp fopen $ruta'w' ); // abrimos el fichero para escritura
   
fwrite $fp$guardar ); // escribimos los resultados
   
fclose($fp); // cerramos el fichero

   
if ( $contador )
   {
      echo 
"La eliminación se realizó con éxito<br/>";
      echo 
"Se modificaron $contador filas";
   }
   else
   {
      echo 
"No se encontro ninguna coincidencia. El archivo quedo intacto.";
   }
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'?>" method="POST">
   Teclee la palabra que quiere buscar para que se elimine la fila: <input type="text" name="buscar">
   <br/><input type="submit" name="submit" value="Buscar">
</form>
Espero sea lo que necesitaban. Sólo hay que cambiar la variable $ruta. Haaaaaaaa, casi se me olvidava, ¡Bienvenido al foro tonibandal!. Suerte

Última edición por Erikfrancisco; 21/10/2006 a las 23:44
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 13:26.