sql >> データベース >  >> RDS >> Mysql

MySQLの正規表現のユーザー入力をエスケープする最良の方法は何ですか?

    AFAIK、MySQL正規表現をエスケープするネイティブな方法はありません。 PHPでpreg_quote(http://www.php.net/manual/en/function.preg-quote.php)を使用してこれを行うことができます。これはおそらくあなたに代わって機能しますが、明らかにその目的のために設計されたものではありません。

    私があなたの状況にあった場合の私の好ましい方法は、PHPで正規表現のホワイトリストを作成し、それを危険な文字列に適用することです。

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

    これにより、単語以外の文字(つまり、A-Za-z0-9_以外のもの)が文字列から削除されます。

    注意:他の回答では、正規表現の特殊文字を削除/エスケープすることはできないと思います。これはあなたの要件であると私は信じています。



    1. MySQLで週次アクティブユーザー(WAU)を計算する方法

    2. クエリから値を返すMysql関数

    3. regex_substrの句で接続

    4. 外部キー、ブロック、および更新の競合