计算PHP字符串中的表达式

计算PHP字符串中的表达式,php,string,evaluation,Php,String,Evaluation,有没有一种方法可以计算PHP字符串中的表达式 在Perl中,您可以通过创建对数组的引用,然后立即取消对它的引用来实现一个技巧。当Perl插入字符串时,它将计算数组引用中的表达式: "string @{[2+2]} string" 它将在字符串中计算2+2 那么PHP呢。PHP中是否存在这样的构造,允许您通过插值计算字符串内部的表达式?为了寻找相同的构造,我做了以下工作,您甚至可以模拟perl语法: $x = "string ".(2+2)." string"; $s = 'testi

有没有一种方法可以计算PHP字符串中的表达式

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

"string @{[2+2]} string"
它将在字符串中计算2+2


那么PHP呢。PHP中是否存在这样的构造,允许您通过插值计算字符串内部的表达式?

为了寻找相同的构造,我做了以下工作,您甚至可以模拟perl语法:

$x = "string ".(2+2)." string";
    $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;
    }

No可能是重复的,但您可以这样使用-+表达式是在字符串中硬编码的,还是传递给您一个包含表达式的字符串,您需要对其求值?如果它是硬编码的,只需取出并连接,就像Jonathan Gray的回答一样。@Dagon基于这种可能的重复链接,OP最好还是使用PERL。简单的回答是:不。PHP不计算字符串中的表达式。它完成了这项工作。PHP是一种解释语言,但也被编译成字节码以提高性能。如何完成任务并不重要,因为无论哪种方式,引擎都会知道您想要一个字符串加上一个等式的结果加上另一个字符串作为最终字符串输出。我认为这是最好的答案。除非有人有更聪明的答案,否则我会接受这个答案。