Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2016, 21:16
Avatar de jrggrz
jrggrz
 
Fecha de Ingreso: febrero-2002
Ubicación: Del valle DF México
Mensajes: 60
Antigüedad: 22 años, 2 meses
Puntos: 0
REGEXP PHP y MySQL (acentos y ñ)

Hola, con ese fin estoy usando esto, pero a veces se "enciman"... o algo así, mejor les enseño:
Código PHP:
Ver original
  1. $keyword ="palabra";
  2.  
  3. $que = array (
  4.     'a','e','i','o','u',
  5.     'á','é','í','ó','ú',
  6.     'ñ','Ñ','n','N');
  7. $por = array (
  8.     '[á|a]','[é|e]','[í|i]','[ó|o]','[ú|u]',
  9.     '[a|á]','[e|é]','[i|í]','[o|ó]','[u|ú]',
  10.     '[ñ|n]','[Ñ|N]','[n|ñ]','[N|Ñ]');
  11.  
  12. $keyword = str_replace($que,$por,$keyword);

y en la $keyword pasa dos veces las vocales... sale esto:

Código:
SELECT * FROM tabla WHERE columna RLIKE 'p[[á|a]|a]l[[á|a]|a]br[[á|a]|a]'
y MySQL genera resultados que ni al caso, el 80% de los registros dan positivo, ya cambié el orden, la forma.... ¿sí es str_replace() la función adecuada? al parecer evalúa y vuelve a reemplazar la parte de la cadena que ya había procesado, pero la única forma que encontré de evitarlo fue eliminando la segunda línea de vocales "'á','é','í','ó','ú'," del array, solo que así ya no funciona en ambos sentidos, y sí hay quienes escriben los acentos en el campo de búsqueda. ¿alguien sabrá qué estoy haciendo mal, o me sugieren procesar la cadena de otro modo?
__________________
Jorge Garza


GTM.mx