我正在构建一个查询PDM系统的系统。
使用逻辑运算符解析字符串的最佳方法是什么。让我们说输入字符串的格式为:
$string = '( (a OR b) and (a AND c) )';
现在,假设a,b和c将被替换为适当的查询子句(单独输入),那么解析它的最佳方法是什么?查询不限于a,b和c(可能有更多或更少的子句),嵌套级别不限于2.
最终结果应该是:
$query->createContainer("and")
->createContainer("or")
->addCondition("a")
->addCondition("b")
->getParent() //this moves the internal pointer back to parent container
->createContainer("and")
->addCondition("a")
->addCondition("c");
我已经为查询构建了对象接口(如上所示),但是我在解析输入字符串时遇到了问题。我仍然可以影响输入字符串的形式,所以也有改进建议。
更复杂字符串的示例: $ string ='((OR(c AND a))或(a AND(f OR(d AND g))))&#39 ;;
感谢您的帮助!