【问题标题】:Evaluating expressions in PHP strings计算 PHP 字符串中的表达式
【发布时间】:2014-10-23 03:42:20
【问题描述】:

有没有办法直接在 PHP 字符串中计算表达式?

在 Perl 中,您可以创建一个对数组的引用,然后立即取消引用它。当 Perl 插入字符串时,它将计算数组引用中的表达式:

"string @{[2+2]} string"

它会在一个字符串中计算 2+2。

PHP 怎么样。 PHP 中是否有这样的结构可以让您评估字符串内的表达式(通过插值)?

【问题讨论】:

标签: php string evaluation


【解决方案1】:
$x = "string ".(2+2)." string";

【讨论】:

  • 它完成了工作。 PHP 是一种解释性语言,但也被编译为字节码以提高性能。你如何完成任务并不重要,因为无论哪种方式,引擎都会知道你想要一个字符串加上一个等式的结果加上另一个字符串作为最终的字符串输出。
  • 我认为这是最好的答案。除非有人有更聪明的答案,否则我会接受这个答案。
【解决方案2】:

寻找相同的,我做了以下,你甚至可以模拟那个 perl 语法:

    $s = 'testing to calculate @{[sin(2+2)]} and @{[round(cos(23*3),3)]}';
    $s = preg_replace_callback("[@{\[(.*?)\]\}]",'parseEval',$s);
    echo $s;
    //output: testing to calculate -0.75680249530793 and 0.993

    function parseEval($match) {
      //unsecure but still..
      eval('$ev = ' . $match[1] . ';');
      return $ev;
    }

【讨论】:

    猜你喜欢
    • 2015-12-03
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多