Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Buscar 2 o mas palabras en una linea de texto

Estas en el tema de Buscar 2 o mas palabras en una linea de texto en el foro de PHP en Foros del Web. Que tal! Quisiera saber cómo encontrar 2 o más palabras dentro de una misma linea de texto... He buscado mucho en la red y no ...
  #1 (permalink)  
Antiguo 10/02/2015, 16:27
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 6 meses
Puntos: 0
Buscar 2 o mas palabras en una linea de texto

Que tal!

Quisiera saber cómo encontrar 2 o más palabras dentro de una misma linea de texto... He buscado mucho en la red y no encuentro lo que necesito, publicar fue mi ultima opcion.

Encontré un código que me ha funcionado de maravilla, pero solo detecta 1 palabra y me va incompleto para lo que quiero hacer... Aqui el link: http://www.forosdelweb.com/f18/busqu...9/#post2567650

-
Ahí muestra como encontrar una palabra en una linea de texto, por ejemplo:

Si tenemos 3 líneas:

Código:
1- Primera linea de texto
2- Segunda linea de texto de ejemplo
3- Tercera y ultima linea
Si intento buscar "ejemplo" usando una variable GET me imprime la segunda linea completa, funciona bien y eso es lo que busco, pero el problema viene cuando en la URL utilizo 2 o más palabras, por ejemplo:

Código:
...?buscar=linea+ejemplo+buscar
De ese modo me aparece la pantalla en blanco, y lo que necesito es que me imprima la linea numero 2 por que contiene por lo menos 2 palabras buscadas dentro del texto... Entre mas palabras coincidan, mejor.

Utilizo urldecode() para leer el signo como espacio. Tambien podría ser un error?

Que me sugieren usar para imprimir la linea si coincide 1 o mas palabras en la busqueda?

Gracias!
  #2 (permalink)  
Antiguo 10/02/2015, 16:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Buscar 2 o mas palabras en una linea de texto

¿Podrías mostrar el código que utilizas o nos toca adivinar?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 10/02/2015, 16:47
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Buscar 2 o mas palabras en una linea de texto

Disculpa, como había puesto el link hacia la respuesta pensé que era suficiente, pero bien, el código es éste:

Código PHP:
Ver original
  1. function buscaCadena_opc1($cadena){
  2.     $lineas = file('archivo.txt',FILE_IGNORE_NEW_LINES);
  3.     foreach($lineas as $linea){
  4.         if(strpos($linea,$cadena)!==false)
  5.         {
  6.             echo $linea."<br />";
  7.         }
  8.     }
  9. }
  10.  
  11. buscaCadena_opc1(urldecode($_GET['buscar']));
  #4 (permalink)  
Antiguo 10/02/2015, 17:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Buscar 2 o mas palabras en una linea de texto

Bueno, el asunto es que en teoría tienes esto: "linea ejemplo buscar".

Y ahí tienes tres palabras, y la función strpos() no es tan inteligente para buscar palabra por palabra, esa es la razón de que no te sirva así.

La idea es que separes dichas palabras y pruebes una a una, así ya sabrías la cantidad de coincidencias dadas por una cadena en particular:

Código PHP:
Ver original
  1. $words = explode(' ', 'foo candy bar');
  2. $subjects = [
  3.   'this is foo but not candy',
  4.   'this is nothing so skip it',
  5.   'here is foo, candy and bar'
  6. ];
  7.  
  8. foreach ($subjects as $subject) {
  9.   $found = 0;
  10.  
  11.   foreach ($words as $word) {
  12.     if (strpos($subject, $word) !== FALSE) {
  13.       $found += 1;
  14.     }
  15.   }
  16.  
  17.   if ($found > 0) {
  18.     // OK
  19.     var_dump($subject);
  20.   }
  21. }

¿Se entiende la idea?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 10/02/2015, 18:05
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Buscar 2 o mas palabras en una linea de texto

Bastante bien!

De ese modo me muestra la primera y la tercera opción y se salta la segunda. Muchas gracias!

Etiquetas: buscador, busqueda, interno, txt
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 03:20.