而不是使用 eval() 将字符串转换为 php 数学方程式?

Instead of using eval() to convert a string to a php math equation?

所以在 eval() 文档中有人引用:

If eval() is the answer, you're almost certainly asking the wrong question. -- Rasmus Lerdorf, BDFL of PHP

所以我不知道该怎么问这个问题。但我想要的是可以:

  1. 从表单字段中输入一个方程,其中包含 php 个变量 ($var['name']) 或某种替换词,这些词稍后会变成方程的变量。

  2. 将上面的等式保存到数据库中。

  3. 以后可以从php代码到运行那个等式。

注意:只有少数站点管理员able/have有权创建这些方程式并将其保存到数据库中。

但是无论如何,我不应该使用eval()。我应该用什么代替?或者应该如何提出问题?

如果可能,最好避免出于任何原因对用户输入使用 eval。例如,如果存在允许访问管理员帐户的错误或漏洞(小问题,如 XSS 等),他们现在可以在您的服务器上执行代码。

如上所述,更好的选择是使用数学解析器。

我对 hoa/math 有很好的体验,它支持变量、自定义函数、常量等。