如何在PHP中构建高级查询生成器

如何在PHP中构建高级查询生成器,php,preg-match,query-builder,Php,Preg Match,Query Builder,我想使用PHP代码创建高级查询生成器 输入: 搜索字符串1和(搜索字符串2或搜索字符串3)。。。诸如此类 目标: 检查和/或运算符规则,包括()括号,并将其转换为以下字符串: 查询: 我的努力: 我使用了preg_match(),但我不知道如何用最佳解决方案检查所有运算符和查询序列。我还通过“空格”分解了用户输入,因此我将所有令牌都放在一个数组中。我仍在努力寻找解决办法。如果我错了,或者有一个好的解决方案,请建议我这样做 谢谢你的帮助。看看这门课。它可能有用 我们可以看看您在这方面的一些不太高级

我想使用PHP代码创建高级查询生成器

输入:

搜索字符串1和(搜索字符串2或搜索字符串3)
。。。诸如此类

目标:

检查和/或运算符规则,包括()括号,并将其转换为以下字符串: 查询:

我的努力:

我使用了
preg_match()
,但我不知道如何用最佳解决方案检查所有运算符和查询序列。我还通过“
空格
”分解了用户输入,因此我将所有令牌都放在一个数组中。我仍在努力寻找解决办法。如果我错了,或者有一个好的解决方案,请建议我这样做


谢谢你的帮助。

看看这门课。它可能有用


我们可以看看您在这方面的一些不太高级的尝试并以此为基础进行构建吗?可能重复:我最近需要解析查询字符串,正如您在SQL语句中所描述的那样。这在正则表达式中是可能的,但我不推荐它,因为它将非常笨拙且不灵活。我编写了一个解析器,它一个字符接一个字符地遍历字符串,同时解析表达式。尝试搜索
php表达式解析器
。您可能需要“自己动手”,但可能有一些源代码可以让您开始。@AaronBlenkush我访问过,但在我的情况下,用户只需输入搜索字符串。是的,我同意我需要一个字符一个字符地查找并检查表达式。但您知道,我必须匹配SQL查询解析器执行的所有规则。e、 g.同一运算符的连续使用不得超过一个,除非有以“(”或“)”等分隔的运算符,否则将需要更多的字符串遍历。请定义运算符规则。我的类似于您在Microsoft Access的“条件”框中键入的内容。例如,用户可能键入
=“绿色”或“黑色”
,我的解析器将输出
Field=“绿色”或Field=“黑色”
。你完全正确-一行中不能有多个运算符。因此
==“红色”
无效。我的解析器有一个变量,用于跟踪下一个“预期”标记。首先需要一个运算符,然后是一个表达式,然后是字符串的结尾或连接器(AND、or、XOR等)。如果解析器在任何时候遇到意外的标记,它会抛出一个错误。感谢您的建议。我已经查看了您建议的代码,但必须有
WHERE
条款我需要自己提供。我的问题是如何根据用户输入的字符串创建
WHERE
子句。
db.table.search_field LIKE '
search_String_1' AND ( db.table.search_field LIKE 'search_String_2' OR db.table.search_field LIKE 'search_String_3')'