sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la mejor manera de escapar de la entrada del usuario para expresiones regulares en MySQL?

AFAIK, no hay una forma nativa de escapar para MySQL regex. Puede hacerlo en PHP con preg_quote (http://www.php.net/manual/en/function.preg-quote.php) que probablemente haría el trabajo por usted, pero obviamente no está diseñado para ese propósito.

Mi forma preferida si estuviera en su situación sería construir una lista blanca de expresiones regulares en PHP que luego puede aplicar a su cadena peligrosa:

$safeString = preg_replace('/[^\w]/','',$dangerousString);

Esto elimina cualquier carácter que no sea una palabra (es decir, cualquier cosa excepto A-Za-z0-9_) de su cadena.

NB Creo que las otras respuestas dadas no eliminarán/escaparán los caracteres especiales de expresiones regulares, lo cual creo que es su requisito.