【问题标题】:Perform calculation from a text code - Laravel从文本代码执行计算 - Laravel
【发布时间】:2021-11-08 20:36:38
【问题描述】:

您好,我正在努力尝试在 Laravel 7 中执行计算。

我有一个像 $val = '1000*2'; 这样的变量,我正在寻找一个辅助函数或相关函数来执行它。

eval($val) 似乎无法正常运行。我只想要一个导致2000 的函数。

TIA

【问题讨论】:

  • 调用eval() 是一个危险的操作,尤其是当值是用户提供的时候。有一些库可用于解析和评估算术。例如:github.com/mossadal/math-parser
  • 我想这对我有帮助,因为我需要执行甚至 pow 函数。你知道我怎样才能将它添加到我的 composer.json 或者可能是我需要运行的 composer require 命令吗?
  • @Vzqivan composer require mossadal/math-parser。 (提示:如果仓库中有composer.json,可以这样导入。)
  • 非常感谢你们!

标签: php laravel math eval


【解决方案1】:

如果你只需要处理乘法,你可以尝试这样的事情。

$val = '1000*2';

$parts = explode('*', $val);

$res = array_reduce($parts, function($carry, $item) {
   return $carry * $item; 
}, 1);

echo $res;

【讨论】:

    【解决方案2】:

    我不建议使用 eval() 对用户传递的值进行计算。

    如果你真的想不惜一切代价获得价值,你可以这样做:

    $val = "echo 1000 * 2;";
    eval ($val);
    

    或者

    $val = eval("return 1000 * 2;");
    echo $val;
    

    您可以在文档中找到更多信息。 https://www.php.net/manual/pt_BR/function.eval.php

    【讨论】:

      【解决方案3】:

      伙计们,这个图书馆帮助了我https://github.com/mossadal/math-parser

      $parser = new StdMathParser();
      $AST = $parser->parse($val);
      

      然后我可以使用$AST->getValue() 访问它。

      谢谢!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2011-07-12
        • 2023-03-13
        • 2021-08-03
        相关资源
        最近更新 更多