Foros del Web » Programando para Internet » PHP »

Buscar palabra en archivo.txt Error, arroja...

Estas en el tema de Buscar palabra en archivo.txt Error, arroja... en el foro de PHP en Foros del Web. Saludos y Bendiciones a Todos Encontré un codigo en php que me busca una cadena dentro de un archivo de texto, utiliza if y else, ...
  #1 (permalink)  
Antiguo 02/07/2014, 18:05
 
Fecha de Ingreso: junio-2011
Mensajes: 20
Antigüedad: 13 años, 4 meses
Puntos: 0
Buscar palabra en archivo.txt Error, arroja...

Saludos y Bendiciones a Todos

Encontré un codigo en php que me busca una cadena dentro de un archivo de texto, utiliza if y else, me encunetra la palabra y me dice si existe o no.
Pero dependiendo de que tan lejos este la posicion de la cadena dentro del archivo me ejecuta la accion contraria y la imprime (es mi analisis)

Este es el codigo:

function buscarPalabra($rutaSimbolos)
{
$rutaSimbolos="tabla_de_simbolos.txt";
$archivoTds1=fopen($rutaSimbolos, "r+");


$palabra = "exit";

$x = 1;

while(!feof($archivoTds1))
{

$busca = fgets($archivoTds1);

//if (strstr($busca, $palabra))
if (strpos($busca, $palabra))

{

echo "<p>Palabra encontrada: <b>$palabra</b></p>";

return;
}
else
{
echo 'No se encontro la palabra ' .$palabra. ', es un Infiltrado (Verifique Mayusculas y Minusculas)';

}

$x++;

}

fclose($archivoTds1);
return $archivoTds1;
}

y en el caso de esa palabra "exit" que es una de las ultimas cadenas dentro del archivo de texto, me aroja como resultado esto:

No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)No se encontro la palabra exit, es un Infiltrado (Verifique Mayusculas y Minusculas)

Palabra encontrada: exit

¿a que se debe eso?
NECESITO Corregir eso para mañana si es posible.
GRACIAAAAAAAAS!
  #2 (permalink)  
Antiguo 02/07/2014, 18:17
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Buscar palabra en archivo.txt Error, arroja...

El código lee linea por linea el archivo y por cada linea te dice si la palabra existe o no.

¿Cómo corregirlo? podrías leer todo el archivo de una vez y hacer el strpos a todo el contenido, o bien no mostrar el mensaje de no encontrado en cada linea, usar una bandera para que si la encuentra, al final del proceso revise la bandera si se encontró o no la palabra.
  #3 (permalink)  
Antiguo 02/07/2014, 19:01
 
Fecha de Ingreso: junio-2011
Mensajes: 20
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Buscar palabra en archivo.txt Error, arroja...

Gracias por tu aporte

OK, tienes algún ejemplo ??
estoy intentando con file_get_contens pero me arroja igual todo lo del else y a veces tarda en cargar xD
  #4 (permalink)  
Antiguo 02/07/2014, 19:15
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Buscar palabra en archivo.txt Error, arroja...

Cita:
OK, tienes algún ejemplo ??
Por supuesto, que tal este:
Código PHP:
Ver original
  1. $encontre = false;
  2. while(!$encontre && (rand(0, 10) > 1)) // La bandera $encontre negada y una condicion adicional.
  3. {
  4.      $buscado = 40; // Valor a buscar.
  5.      $random = rand(0, 500); // Lugar donde buscar.
  6.  
  7.      if($random == $buscado) // Ver si lo encuntra.
  8.           $encontre = true; // Si es asi activar la bandera.
  9. }
  10. if($encontre)
  11.    echo("Encontre");
  12. else
  13.    echo("No encontre");

solo tienes que adaptarlo a tu funcion.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #5 (permalink)  
Antiguo 02/07/2014, 19:34
 
Fecha de Ingreso: junio-2011
Mensajes: 20
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Buscar palabra en archivo.txt Error, arroja...

GRACIAS! NSD por tu aporte

Creo que resolvi con file_get_contens y lo coloce un breack; al else y listo ya no me arroja nada, hasta ahorita todo normal.



Algo que queria aparte es Extraer de otro archivo la cadena y guardarla en $palabra

Etiquetas: palabra, tabla
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 15:31.