我有一个实例的字符串:
"2 + 2 - 2"
并在评估时应返回int(2)
;
我正在寻找一个函数/解析器,可以确定数据内容中是否有任何数学内容匹配。更多例子:
"(2 + 2) / 2"
"(4 / 8) * 12"
"128 * 8"
不需要评估和计算这些数学表达式,只需要一个函数将决定(True/False
返回值),如果该语句属于这种数学类型。
这可能与正则表达式或其他什么?谢谢!
答案 0 :(得分:1)
也许在运行时将其作为php运行并检查响应值是否以数字形式返回。看看这个。 http://php.net/manual/en/function.eval.php
答案 1 :(得分:0)
见eval。例如,您可以这样做:
$result = INF;
try {
eval("$result=" + myMathExpression); // Evaluate here
} catch (Exception $e) {
}
if($result != INF) echo("Expression is a valid mathematical expression.");
请注意,因为将评估任何PHP代码!
答案 2 :(得分:0)
如果您知道要解析的表达式类型,可以尝试使用正则表达式。如果您尝试验证^\d+\s*(\+|-|\*|\\)\s*\d+
,+
,*
和-
的二元运算符,则\
之类的内容应该为true。因此,它会验证3 + 3
,2 - 0
等项目
答案 3 :(得分:0)
您可以使用XP-framework中的解析器生成器。 有关计算器,请参阅sample grammar,该计算器可以转换为PHP代码。