Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a melhor maneira de escapar da entrada do usuário para expressões regulares no MySQL?


AFAIK, não há maneira nativa de escapar para o MySQL regex. Você pode fazer isso em PHP com preg_quote (http://www.php.net/manual/en/function.preg-quote.php) que provavelmente faria o trabalho para você, mas obviamente não é projetado para esse propósito.

Minha maneira preferida, se eu estivesse na sua situação, seria construir uma lista branca de regex em PHP que você pode aplicar à sua string perigosa:
$safeString = preg_replace('/[^\w]/','',$dangerousString);

Isso remove quaisquer caracteres que não sejam palavras (ou seja, qualquer coisa, exceto A-Za-z0-9_) da sua string.

NB, acredito que as outras respostas dadas não removerão / escaparão de caracteres especiais regex, o que acredito ser sua exigência.