如何确定字符串是否是PHP中的数学语句?

时间:2012-03-22 14:43:23

标签: php regex math match

我有一个实例的字符串:

"2 + 2 - 2"并在评估时应返回int(2);

我正在寻找一个函数/解析器,可以确定数据内容中是否有任何数学内容匹配。更多例子:

"(2 + 2) / 2"
"(4 / 8) * 12"
"128 * 8"

不需要评估和计算这些数学表达式,只需要一个函数将决定(True/False返回值),如果该语句属于这种数学类型。

这可能与正则表达式或其他什么?谢谢!

4 个答案:

答案 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 + 32 - 0等项目

答案 3 :(得分:0)

您可以使用XP-framework中的解析器生成器。 有关计算器,请参阅sample grammar,该计算器可以转换为PHP代码。