如何使用PHP以字符串形式计算输出的数学表达式?
<?php
$ma ="min(2+10,5*1,max(8/2,8-2,abs(-10)))"; // math expression
print $ma; // output of the calculation
?>
答案 0 :(得分:1)
我在GitHub上找到了一些解析器,这个解析器看起来很有趣:
mossadal/math-parser: PHP parser for mathematical expressions
可以这样使用:
use MathParser\StdMathParser;
use MathParser\Interpreting\Evaluator;
$parser = new StdMathParser();
// Generate an abstract syntax tree
$AST = $parser->parse('1+2');
// Do something with the AST, e.g. evaluate the expression:
$evaluator = new Evaluator();
$value = $AST->accept($evaluator);
echo $value;
它还可以与cos()
或sin()
之类的功能一起使用。
答案 1 :(得分:1)
我制作了一个math_eval
辅助功能包,确实应该满足您的需求。
用法示例:
$two = math_eval('1 + 1');
$three = math_eval('5 - 2');
$ten = math_eval('2 * 5');
$four = math_eval('8 / 2');
链接:https://github.com/langleyfoxall/math_eval
在后台,这包裹了mossadal / math-parser软件包。
答案 2 :(得分:0)
您可以使用PHP eval()函数来处理数学表达式。 eval()函数仅支持PHP代码,而不支持确切的数学表达式。因此,在eval()函数中使用的数学表达式字符串应该是有效的PHP代码,您可以使用
$ma = "min(2+10,5*1,max(8/2,8-2,abs(-10)))";
$result= eval('return '.$ma.';');
print $p;
注意:-如果用户输入了公式,则应立即验证输入内容,否则会遇到巨大的安全问题