0

私はこのような正規表現を持っています

preg_match("/^\\s*(insert|delete|update|replace|create|drop|alter|use) /i",$query)

これは、私たちが維持しているサイト上のほぼすべてのトランザクションを担当するかなり古い関数の一部です (最低で 8 年前のようです...)

このクエリがこの正規表現のテストに失敗したときの私のサプライズを想像してみてください....

"DELETE
                    FROM KursSmer 
                    WHERE   IDKurs = '523' AND
                            IDSmer = '50' AND
                            IDSkolskaGodina = '1' AND
                            JeObavezan = '0'"

厄介な人を取得するのに約1時間かかりました...しかし、私はそれをしました... DELETE単語のすぐ隣の最初の行の終わりに\n行要素がありました...のようにDELETE\n

さて、これを修正できるかどうか疑問に思っていますか?

4

1 に答える 1

5

m複数行の修飾子が必要です。

preg_match("/^\\s*(insert|delete|update|replace|create|drop|alter|use) /im",$query)

パターン修飾子

于 2012-10-02T14:23:24.533 に答える