Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

176
Vistas
Codeigniter Query Builder usando MySQL y REGEX con límites de palabras agrega espacio adicional

Con este problema, realmente me gustaría evitar modificar los archivos principales si es posible, por lo que una solución alternativa sería extremadamente útil.

REGEX funciona con la clase de generador de consultas 'where' bastante fácil, pero el uso de los límites de palabras lo rompe al agregar un espacio adicional.

 function search($searchQuery){ $sq = '[[:<:]]'.strtolower($searchQuery).'[[:>:]]'; $this->db->select('column'); $this->db->from('table'); $this->db->where('LOWER(otherColumn) REGEXP', $sq); echo $this->db->get_compiled_select(); } search('billy');

Resultado Esperado:

SELECCIONE column DE table DONDE INFERIOR (otraColumna) REGEXP '[[:<:]]billy[[:>:]]';

Resultado actual:

SELECCIONE column DE table DONDE INFERIOR (otraColumna) REGEXP [[: <:]]billy[[:>:]]';

Este es un problema tan específico con una pila específica y no he encontrado a nadie que se encuentre con el mismo problema. He intentado escapar de los dos puntos, los <, los corchetes, nada parece funcionar. O agrega barras invertidas adicionales.

Realmente cualquier ayuda o dirección sería útil en este punto.

Gracias por adelantado.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

function search($searchQuery){ $sq = $this->db->escape('[[:<:]]'.strtolower($searchQuery).'[[:>:]]'); $this->db->select('column'); $this->db->from('table'); $this->db->where('LOWER(otherColumn) REGEXP ', $sq, false); echo $this->db->get_compiled_select(); } search('billy');

Para Codeigniter v 3.1.6 y MySQL v5.6


Solo porque Codeigniter agrega espacio antes y después de < al compilar la consulta, no sé por qué, pero lo hace. Y he escapado el valor de la variable $sq para mitigar el ataque de inyección o idéntico. Por lo tanto, se agregó un tercer parámetro a la función where como false para evitar que vuelva a escapar y agregue espacios.

No he pasado por otras versiones de codeigniter. Espero que esto funcione.

Para obtener más información sobre MySQL REGEXP , visite este enlace: Manual de referencia de MySQL 5.6 - Expresiones regulares

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda