在mm项目中,我想评估数学公式,这是一个字符串。示例:"((1*10)/100) + 100"
.
如何评价这样的公式?我使用eval()
,但它抛出Parse error: syntax error, unexpected end of file
错误和eval
不是一个安全的功能使用。
无论如何,如果我可以这样做吗?如果除了eval没有别的方法,那我该怎么做呢?为什么会抛出Parse error: syntax error, unexpected end of file
错误?
这将帮助你
echo eval('return '. "((1*10)/100) + 100" .';');
php的exec()
函数允许执行命令,而不是计算数学方程或公式的结果。这是完全不同的。该字符串不包含任何命令,因此语法无效。
相反,您需要在exec()
调用中提供有效的命令,而不是数学公式:
看这个简单的例子:
<?php
$input = '((1*10)/100) + 100';
echo exec('php -r "echo ' . $input . ';"');
这显然需要php的命令行版本作为php
可用,以防您试图从http服务器中触发它。但是使用任何其他可用的解释器(例如bash
)也可以做到同样的事情。
一个"内联"的选择(所以没有分支外部进程)是使用php的eval()
函数。但是你需要给它一个命令,而不是一个公式。其优点是,您不必依赖任何其他工具或解释器来在运行时可用。相应的示例如下:
<?php
$input = '((1*10)/100) + 100';
echo eval('return ' . $input . ';');
两个片段的输出显然是100.1
。