使用PHP从字符串计算数学表达式

时间:2018-08-13 06:28:29

标签: php

如何使用PHP以字符串形式计算输出的数学表达式?

<?php
    $ma ="min(2+10,5*1,max(8/2,8-2,abs(-10)))"; // math expression
    print $ma; // output of the calculation
?>

3 个答案:

答案 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;

注意:-如果用户输入了公式,则应立即验证输入内容,否则会遇到巨大的安全问题