Foros del Web » Programando para Internet » PHP »

Expresion regular que haga esto

Estas en el tema de Expresion regular que haga esto en el foro de PHP en Foros del Web. tengo la siguiente cadena. $grande = "Larom ipsum dolor sit amet"; y tengo esta otra $busqueda = "ipsum sit"; Lo que quiero es encontrar la ...
  #1 (permalink)  
Antiguo 09/04/2010, 12:04
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Pregunta Expresion regular que haga esto

tengo la siguiente cadena.

$grande = "Larom ipsum dolor sit amet";

y tengo esta otra

$busqueda = "ipsum sit";

Lo que quiero es encontrar la manera de USANDO una expresion regular determinar si la cadena busqueda se encuentra en la cadena grande.

(solo es un ejemplo de lo que necesito) Digamos que el # fuera un comodin, entonces necesito que busque asi

$busqueda = "#ipsum#sit#";

de esta manera no importaria si hay texto antes de 'ipsum' o despues de 'ipsum' o antes de 'sit' o despues de 'sit'. y el resultado seria true.

Gracias
  #2 (permalink)  
Antiguo 09/04/2010, 12:09
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresion regular que haga esto

en las regex el punto es cualquier caracter.. y el * es 1 o mas veces solo reemplaza los comodines por .*

Código PHP:
Ver original
  1. $grande = "Larom ipsum dolor sit amet";
  2. $comodin = "#";
  3. $busqueda = "#ipsum#sit#";
  4. $busqueda = str_replace($comodin, "(.*)", $busqueda);
  5. if(preg_match("/".$busqueda."/s", $grande)) echo 'founded';

espero te sirva
saludos
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 12/04/2010, 07:53
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Pregunta Respuesta: Expresion regular que haga esto

Gracis por la respuesta, pero ahora tengo otra pregunta que nace a raiz de esto mismo.

Como aplico esta expresion regular a una consulta mysql.

Para ser mas directo, tengo esta consulta:
Código MySQL:
Ver original
  1. $query_resultados_leg = sprintf("SELECT contenidos.*, entidades.entidad, ponentes.ponente, categoria2.categoria2, categoria3.categoria3, categoria3.idcat3 FROM contenidos, entidades, ponentes, categoria2, categoria3 WHERE contenidos.idcat1 LIKE %s AND (contenidos.titulo LIKE %s OR contenidos.temas LIKE %s OR contenidos.normasdemandadas LIKE %s OR contenidos.relacionados LIKE %s OR contenidos.tipodeaccion LIKE %s OR entidades.entidad LIKE%s OR contenidos.metadatos LIKE %s) AND entidades.identidad = contenidos.identidad AND (ponentes.idponente = contenidos.idponente1) AND contenidos.idcat1 = 1 AND (categoria2.idcat2 = contenidos.idcat2) AND (categoria3.idcat3 = contenidos.idcat3 OR contenidos.idcat3 = 0) AND contenidos.estado=1 ORDER BY orden DESC"

y quiero que por ejemplo en contenidos.metadatos LIKE %s se aplicara la expresion regular en ligar del like.
Gracias
  #4 (permalink)  
Antiguo 12/04/2010, 08:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresion regular que haga esto

debes usar el operador RLIKE, por favor consulta un manual... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 12/04/2010, 08:37
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Respuesta: Expresion regular que haga esto

Me auto respondo jejejejej

Teniendo esto
Código PHP:
Ver original
  1. $grande = "Larom ipsum dolor sit amet";
  2. $comodin = "#";
  3. $busqueda = "#ipsum#sit#";
  4. $busqueda = str_replace($comodin, "(.*)", $busqueda);
  5. if(preg_match("/".$busqueda."/s", $grande)) echo 'founded';
simplemente hago eso
Código MySQL:
Ver original
  1. WHERE contenido REGEXP '$busqueda'

Etiquetas: expresion, regular
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 07:42.