我的最终目标是提取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语句。但是现在我只是试图聪明地解析字符串。
问题是,是否已经存在可以做类似于此的事情,或者我是否正在从头开始创建某些东西?
答案 0 :(得分:2)
.*(?=\s+a)
将获得(Field1 eq '(test)' or Field2 lt 20)
(\(b.*)
将获得(beginsWith('test',Field3) or Field4 eq 3)
如果您愿意,可以将这些组合成OR组 -
.*(?=\s+a)|(\(b.*)
我不确定这是你所追求的。看起来你要把复杂的东西变成简单的东西会遇到很多麻烦。在我看来,你必须编写几个正则表达式过滤器来提取字符串。