Foros del Web » Programando para Internet » PHP »

Problemilla con preg_match

Estas en el tema de Problemilla con preg_match en el foro de PHP en Foros del Web. Buenas, Bueno verán, estoy intentado evaluar una cadena y, para eso uso preg_match, ya que strpos y strstr no me sirven, pues al principio las ...
  #1 (permalink)  
Antiguo 13/12/2010, 06:00
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Problemilla con preg_match

Buenas,

Bueno verán, estoy intentado evaluar una cadena y, para eso uso preg_match, ya que strpos y strstr no me sirven, pues al principio las comparaciones las realiza bien, pero si pones palabras parecidas, tambien me las evalua como correctas.

Bueno, que me lío... la cuestión es que usando preg_match me va de maravilla, excepto cuando pongo corchetes [].

Aqui un ejemplo:

Código PHP:
Ver original
  1. $palabra = 'color';
  2. $palabras = 'color';
  3.  
  4. $checked = (preg_match("/\b".$palabra."\b/i", "$palabras")) ? "si" : "no";

Esto funciona de maravilla, pero si ahora hago así:

Código PHP:
Ver original
  1. $palabra = 'color[1]';
  2. $palabras = 'color[1]';
  3.  
  4. $checked = (preg_match("/\b".$palabra."\b/i", "$palabras")) ? "si" : "no";

No me lo evalúa, me dice que no es correcta... ¿Por qué?

Bueno, eso es todo.

Saludos y muchas gracias,
  #2 (permalink)  
Antiguo 13/12/2010, 06:20
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problemilla con preg_match

[ ] son caracteres reservados en las expresiones
lo que tu necesitas es usar la funcion preg_quote

www.php.net/preg_quote

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 13/12/2010, 09:02
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Problemilla con preg_match

Buenas Hidek1 y gracias por la ayuda ;)

Veamos, he leído la función que me dices y la he intentado aplicar, y parece ser que si, que "funciona", pués según veo los corchetes los escapa bien, sin embargo, luego al evalúar con preg_match sí las palabras son iguales o no, me sigue diciendo que no.

Esto es lo que tengo:
Código PHP:
Ver original
  1. $palabra = 'color[1]';
  2. $palabras = 'color[1]';
  3.  
  4. $palabra = preg_quote($palabra);
  5. $palabras = preg_quote($palabras);
  6.  
  7. echo $checked = (preg_match("/\b".$palabra."\b/i", "$palabras")) ? "si" : "no";

¿Qué puede ser?

Un saludo y muchas gracias,
  #4 (permalink)  
Antiguo 13/12/2010, 09:11
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problemilla con preg_match

mmm pero no uses preg_quote en la palabra a buscar ;D

en conclusión... borra la linea 5 de tu código

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 13/12/2010, 16:12
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Problemilla con preg_match

Hice lo que comentas y sigue diciendo que no coincide. Lo tengo así:

Código PHP:
Ver original
  1. $palabra = 'color[1]';
  2. $palabras = 'color[1]';
  3.  
  4. $palabra = preg_quote($palabra);
  5.  
  6. echo $checked = (preg_match("/\b".$palabra."\b/i", "$palabras")) ? "si" : "no";

y como ya digo, sigue sin funcionar, ¿qué podrá ser?. También probé a usar preg_quote sólo en la variable palabras y ni aun así

Saludos y muchas gracias,

EDITO: Acabo de dar con el problema, pero no sé como solucionarlo. Veamos, si hago así:

Código PHP:
Ver original
  1. echo $checked = (preg_match("/$palabra/i", $palabras)) ? "si" : "no";

Sí que funciona. Pero sin embargo, si pongo la b:

Código PHP:
Ver original
  1. echo $checked = (preg_match("/\b$palabra\b/i", $palabras)) ? "si" : "no";

no me funciona y, necesito poner la b para que la comparación de la palabra se haga correctamente.

¿Cómo puedo acabar de solucionar eso?

Un saludo y muchas gracias,

Última edición por OsSk4R; 14/12/2010 a las 04:38 Razón: He dado con el problema pero...
  #6 (permalink)  
Antiguo 14/12/2010, 06:19
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problemilla con preg_match

podrias usar "/^$palabra$/i"

^ inicio de cadena
$ fin de cadena

saludos
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 15/12/2010, 04:37
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Problemilla con preg_match

Ostias es verdad, ni se me había ocurrido :P

Muchas gracias Hidek1, me ha servido :)

Un saludo,

Etiquetas: Ninguno
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 21:22.