2012-10-02 29 views
0

失敗,我有一個正則表達式expresion是這樣正則表達式的新行

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

這是一個很老的功能,這是負責的allmost所有我們保持我們網站上的交易的一部分(其就像8歲的分...)

想象一下,我suprice當此查詢對這個表達式失敗TE測試....

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

我花了大約1小時,以獲得討厭的傢伙..但我做到了......有在DELETE字旁邊的第一行末尾有一個\ n行元素... like DELETE\n

現在,我想知道這是否可以糾正?

+0

你已經使用'\ S *'早些時候在正則表達式。你知道這意味着什麼嗎? – mario

+0

我希望你沒有使用這個正則表達式來防止/檢測sql注入... –

回答

5

對於多行,您需要m修飾符。

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

Pattern Modifiers

+0

謝謝:),你不會相信這個正則表達式在覈心數據庫類超過8年,並沒有破壞它,直到現在...直到我對它進行了修補:P – Sangoku