2011-08-11 35 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!';