用PHP验证表达式


Validate an Expression in PHP

我有一个textbox,用于用户输入表达式。我想验证输入的表达式。有办法做到这一点吗
例如:(1*2)+3*4为True,(1**2)+*3为false
非常感谢。

AFAIK您将需要使用eval(),除非您想用php_check_syntax()进行一些恶作剧,因为这需要将表达式保存到一个文件中,这似乎很难处理。

如果代码中存在语法错误,eval()将返回false;否则,它将返回null或所提供表达式的返回值。不过,如果你在评估一个正常返回false的表达式,这会让你感到悲伤。

请注意,使用eval()将允许任何人将任意PHP输入到您的表单中并执行它,这显然是一个非常糟糕的想法,应该非常小心。

看看这个类似的问题:PHP评估和捕获错误(尽可能多)

我不知道这是否有任何帮助(你的问题有点模糊*),但有人有一个算术计算器(没有eval!)可用:PHP函数来评估字符串,比如"2-1";作为算术2-1=1

然后可能将结果分配为

$true = <(1 * 2) + 3 *4 result here>;
$false = <(1 ** 2) +* 3 result here>;

并用于验证。

如果只需要验证字符串,请尝试正则表达式或删除空格的精确字符串匹配。

// Basic string matching.
$expected = '(1*2)+3*4';
$data = <get data from text input to this variable or similar>;
if ($expected == str_replace(' ', '', $data)) {
    return true;
}
...

如果您需要验证格式(例如,给定字符串的数学正确性),请尝试算术计算器检查字符串是否返回数字:

$value = <use arithmetic evaluator to get the value>;
if (is_numeric($value)) {
    return true;
}
...

*您能更清楚地说明这些值中应该返回truefalse的内容吗。是否需要计算到某个数值?字符串需要完全匹配吗?字符串是否不断变化,是否需要验证为正确的数学表达式?