Php 解析SQL字符串

Php 解析SQL字符串,php,sql,Php,Sql,将sql字符串解析为独立组件的好方法是什么。我试过用正则表达式,但是我不能让它正常工作 比如说: "SELECT * FROM tbl WHERE user_id > 50" 将创建一个包含所有组件的数组 $arr[0] = "SELECT"; $arr[1] = "*"; $arr[2] = "FROM"; 等等 谢谢你我想要一个可以集成到你的语言中的sql解析器:不要重新发明轮子 我没有特别推荐一款,但我相信你能找到一款适合你需要的 请参阅相关内容:SQL SELECT语句的完整语

将sql字符串解析为独立组件的好方法是什么。我试过用正则表达式,但是我不能让它正常工作

比如说:

"SELECT * FROM tbl WHERE user_id > 50"
将创建一个包含所有组件的数组

$arr[0] = "SELECT";
$arr[1] = "*";
$arr[2] = "FROM";
等等


谢谢你

我想要一个可以集成到你的语言中的sql解析器:不要重新发明轮子

我没有特别推荐一款,但我相信你能找到一款适合你需要的


请参阅相关内容:

SQL SELECT语句的完整语法非常复杂。我认为您可能希望将自己限制在其中的一个子集。

正确、完整地解析SQL是很困难的。您可以免费使用ANTLR之类的解析器生成器工具包以及SQL“语法”。就成本而言,我知道它包括一个SQL解析器。

正则表达式只能解析一个SQL解析器。也就是说,一种可以用有限状态机表示的语言

大多数编程语言(包括SQL)不能表示为正则语言,因此不能用正则表达式进行解析。即使是执行有限的任务,比如拆分SQL表达式,使用正则表达式也会非常困难

您需要使用更健壮的解析器生成器来处理更复杂的语法。你用PHP标记你的问题,所以你可能想研究一下


您还需要找到一个与您选择的解析器生成器兼容的PHP语法文件。我不知道从哪里可以获得PHP和Lime的代码,但是有一个纯Perl项目,名为,它基于MySQL的语法。

您所展示的示例是一个代码,它将读取SQL语句并使用空格进行标记,并将每个标记存储在数组中。如果您正在寻找这样的代码,可以使用php中的拆分函数:

问候,
普奥里亚