从字符串中提取组

时间:2014-10-22 18:52:07

标签: php mysql

我的最终目标是提取oData $ filter字符串并在PHP中创建mySQL字符串。例如:

(Field1 eq '(test)' or Field2 lt 20) and (beginsWith('test',Field3) or Field4 eq 3)

将成为

(Field1 = '(test)' OR Field2 < 20) AND (Field3 LIKE 'test%' OR Field4 = 3)

这不仅仅是对内在关键字进行替换。不可避免我希望能够找出startsWith('test',Field3)是一个字段,然后我可以将这些部分转换为mySQL语句。到目前为止我尝试做的是创建一个WhereGroup类来存储Where类,因此括号中的每个组都有一个实例,然后每个语句都在Where实例中。然后我会递归地生成where语句。但是现在我只是试图聪明地解析字符串。

问题是,是否已经存在可以做类似于此的事情,或者我是否正在从头开始创建某些东西?

1 个答案:

答案 0 :(得分:2)

.*(?=\s+a)将获得(Field1 eq '(test)' or Field2 lt 20)

(\(b.*)将获得(beginsWith('test',Field3) or Field4 eq 3)

如果您愿意,可以将这些组合成OR组 -

.*(?=\s+a)|(\(b.*)

我不确定这是你所追求的。看起来你要把复杂的东西变成简单的东西会遇到很多麻烦。在我看来,你必须编写几个正则表达式过滤器来提取字符串。