(PHP)计算简单逻辑表达式

(PHP)计算简单逻辑表达式,php,Php,我有以下形式的表达式(EBNF): 或者,我也可以用后缀符号表示: 110&|110|&| 在PHP中,有没有一种简单的方法来评估这一点?(即,此特定示例的结果应为1)。由于安全问题,我希望避免使用eval函数 如果在PHP中没有eval函数就无法轻松实现这一点,那么编写自定义解析器的最佳方法是什么 如果没有eval函数,这在PHP中是不容易实现的 您必须使用preg_match或类似的工具来评估代码,然后对其进行转换。如果没有eval函数,这在PHP中是不容易实现的 您必须使

我有以下形式的表达式(EBNF):

或者,我也可以用后缀符号表示:

110&|110|&|
在PHP中,有没有一种简单的方法来评估这一点?(即,此特定示例的结果应为
1
)。由于安全问题,我希望避免使用
eval
函数


如果在PHP中没有
eval
函数就无法轻松实现这一点,那么编写自定义解析器的最佳方法是什么

如果没有eval函数,这在PHP中是不容易实现的


您必须使用preg_match或类似的工具来评估代码,然后对其进行转换。

如果没有eval函数,这在PHP中是不容易实现的


您必须使用preg_match或类似的工具来评估代码,然后对其进行转换。

最简单的方法是使用eval。 为了避开安全问题,您可以设置一个白名单: $whitelist=array(“(“,”)”、“1”、“0”、“%”、“|”)

编写解析器的最佳方法是获得一个解析器生成器,如 “loco”或“lime”或“php peg”。您只需定义语法并开始解析它 使用RegexpParser或StringParser(或两者都使用)。
-最简单的方法是使用eval。 为了避开安全问题,您可以设置一个白名单: $whitelist=array(“(“,”)”、“1”、“0”、“%”、“|”)

编写解析器的最佳方法是获得一个解析器生成器,如 “loco”或“lime”或“php peg”。您只需定义语法并开始解析它 使用RegexpParser或StringParser(或两者都使用)。
-

我知道已经有了正确的答案,但是EBNF有一个PHP解析器

我知道已经有了正确的答案,但是EBNF有一个PHP解析器

谢谢。最后,我使用RegEx来验证代码,以确保它的格式不正确,因此是安全的,然后使用
eval
来验证它-希望这样可以。谢谢。最后,我使用RegEx验证了代码,以确保它的格式不正确,因此是安全的,然后使用
eval
验证它-希望这应该是好的。感谢链接。我决定采取不同的方法——纯粹是因为我的代码需要简单高效,但了解解析器很好——这将在功能上派上用场:)谢谢链接。我决定采取不同的方法——纯粹是因为我的代码需要简单高效,但了解解析器很好——这将在功能中派上用场:)
(1|(1&0))|(1&(1|0))
110&|110|&|