在PHP中验证表达式

在PHP中验证表达式,php,expression,Php,Expression,我有一个文本框,用于用户输入表达式。我想验证输入的表达式。有什么方法可以做到这一点吗? 例如:(1*2)+3*4为真,(1**2)+*3为假。 非常感谢。好吧,你需要使用eval(),除非你想用php\u check\u syntax()做些花招,这需要你将表达式保存到一个文件中,这看起来很难操作 如果代码中存在语法错误,eval()将返回false;如果不是,它将返回null或所提供表达式的返回值。但是,如果计算一个通常返回false的表达式,这将给您带来一些麻烦 请注意,使用eval()将允

我有一个
文本框
,用于用户输入表达式。我想验证输入的表达式。有什么方法可以做到这一点吗?
例如:(1*2)+3*4为真,(1**2)+*3为假。

非常感谢。

好吧,你需要使用
eval()
,除非你想用
php\u check\u syntax()
做些花招,这需要你将表达式保存到一个文件中,这看起来很难操作

如果代码中存在语法错误,
eval()
将返回
false
;如果不是,它将返回
null
或所提供表达式的返回值。但是,如果计算一个通常返回false的表达式,这将给您带来一些麻烦

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


检查一下这个类似的问题:

我不知道这是否有帮助(你的问题有点模糊*),但是有人有一个算术计算器(没有
eval
!):

然后,也许将结果指定为

$true = <(1 * 2) + 3 *4 result here>;
$false = <(1 ** 2) +* 3 result here>;
$true=;
$false=;
并用于验证

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

// 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;
}

...
//基本字符串匹配。
$expected='(1*2)+3*4';
$data=;
如果($expected==str_replace(“”,,$data)){
返回true;
}
...
如果需要验证格式(例如给定字符串的数学正确性),请尝试算术计算器检查字符串是否返回数字:

$value = <use arithmetic evaluator to get the value>;

if (is_numeric($value)) {
    return true;
}

...
$value=;
如果(是数值($value)){
返回true;
}
...

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

到目前为止,您有什么方法来实现这一点?一旦确定表达式是否有效,您是否打算对其进行求值?如果是这样的话,你应该直接问那个问题。@meagar,我只是想验证这个表达式,不想做任何其他事情。非常感谢