【发布时间】:2014-07-31 15:36:43
【问题描述】:
我正忙于编写一个后端模块,用户可以在其中创建自己的条件/规则。现在我想将一个条件分成几部分。
例如:
条件:{变量} > 100
// desired output
Array
(
[0] => {variable} > 100
)
条件:{variable} == {anotherVariable} OR {var}
// desired output
Array
(
[0] => {variable} == {anotherVariable}
[1] => OR
[2] => {var} <= 10
)
条件:{variable} == {anotherVariable} AND {var}
// desired output
Array
(
[0] => {variable} == {anotherVariable}
[1] => AND
[2] => {var} <= 10
[3] => AND
[4] => {variable} == some string
)
然后我必须将比较分成 3 个部分:
比较: {variable} == {anotherVariable}
// desired output
// allowed comparison operators are: ==, !=, >, >=, <, <=, <>
Array
(
[0] => {variable} // comparison
[1] => == // comparision operator
[2] => {anotherVariable} // comparison
)
我现在用正则表达式苦苦挣扎了好几个小时,但没有得到想要的输出。
【问题讨论】:
-
它们可以嵌套
AND和OR吗? -
@anubhava 是的,这将极大地提升功能,但我的阵列中没有很好的答案。它应该使用 {var} > 10 AND ({var2} == something OR {var3} == something)。是否可以使用正则表达式将 () 之间的所有内容都放在一个新数组中?
-
Regex 不是解决此问题的正确工具。您将需要构建您的自定义解析器。
-
在我看来这不是一个可以单独通过正则表达式解决的问题。在我看来,您还需要添加一些编程逻辑。
标签: php regex preg-match-all