2011-08-11 49 views
0

我給我的用戶創建自己的MySQL查詢的能力。別擔心,我正在考慮所有的SQL注入等。驗證MySQL查詢的括號

我所想要做的是驗證在創建自己的查詢,他們用括號...

因此,可以說,他們的查詢看起來是這樣的:

$string = '1 AND (2 OR 3) AND (4 AND (5 OR 6)'; 

看看他們是如何做到不在數字4之前關閉左括號?有沒有任何正則表達式我可以運行這個來驗證任何未被正確添加的打開或關閉括號?

我一直在玩和搜索無處不在,但我不知道如何使這項工作。

+2

http://stackoverflow.com/questions/562606/regex-for-checking-if-a-string-has-mismatched-parentheses –

回答

0

謝謝@Jayantha!這是我從你點擊鏈接找到了解決辦法:

$string = '1 AND (2 OR 3) AND (4 AND (5 OR 6)'; 

if (!preg_match("/^((?:[^()]|\((?1)\))*+)$/", $string, $matches)) 
    echo 'Your parentheses are wrong!';