私はこのような正規表現を持っています
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
さて、これを修正できるかどうか疑問に思っていますか?