Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le meilleur moyen d'échapper à la saisie de l'utilisateur pour les expressions régulières dans MySQL ?

AFAIK, il n'y a pas de moyen natif de s'échapper pour MySQL regex. Vous pouvez le faire en PHP avec preg_quote (http://www.php.net/manual/en/function.preg-quote.php) qui ferait probablement le travail pour vous, mais n'est évidemment pas conçu à cet effet.

Ma méthode préférée si j'étais dans votre situation serait de construire une liste blanche de regex en PHP que vous pouvez ensuite appliquer à votre chaîne dangereuse :

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

Cela supprime tous les caractères non verbaux (c'est-à-dire tout sauf A-Za-z0-9_) de votre chaîne.

NB Je crois que les autres réponses données ne supprimeront/échapperont pas les caractères spéciaux regex, ce qui, je pense, est votre exigence.