Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

177
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!