Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/12/2017, 05:08
azaz
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 14 años, 2 meses
Puntos: 10
expresion regular en php

Necesito saber si es posible obtener unos resultados de un texto a traves de una expresion regular, comento lo que necesito.

supongamos que quiero buscar la cadena "casa grande" pero me debe buscar con prioridad la palabra completa "casa grande" hasta ahi sin problema pero quiero que tambien busque las palabras "casa" y "grande" siempre i cuando casa y grande esten presentes en el documento aunque no juntas siendo valido "casa","casas" y "grande","grandes".

no se si me explico deberia encontrarme cosas como:

"esta es una casa grande"
"mi casa es muy grande"
"mi casita dicen que es grande"
"grandecita es mi casita"

incluso que la captura la haga en ese orden de mayor relevancia, no se si es posible esto, yo estoy intentando hacer pero me quedo bloqueado.


Código PHP:
Ver original
  1. $contenido="
  2. esto es el contendio: esto es una casa grande con mucho jardin aunque dicen que mi casa es grande yo creo
  3. que mi casita no es grandecita aunque realmente sea grandecita mi casita
  4. ";
  5. $expresion="/(^[casa]\s[grande]$ | (((casa[s]?)?|(grande[s]?)?)){1,})(((casa[s]?)?|(grande[s]?)?){1,})/";
  6.  
  7. preg_match_all($expresion,$contenido,$coincidencias);
  8.  
  9. echo"<pre>";
  10. print_r($coincidencias);
  11. echo"</pre>";

la verdad que no me funciona no se si se entiende la idea, segun lei la documentacion de preg_match_all se le puede pasar una bandera en este caso PREG_PATTERN_ORDER que lo que hace es que le pasa al segundo indice el subpatron esto me podria servir siempre y cuando la expresion puesta arriba funcione y al segundo patron se le añada una negacion de encontrar la primera coincidencia, la verdad que ya lo probe sin exito.
saludos

Última edición por azaz; 19/12/2017 a las 05:32