Есть ли способ оценить выражение прямо внутри строки PHP?
В Perl вы можете сделать трюк с созданием ссылки на массив, а затем сразу же разыменовывать его. Когда Perl интерполирует строку, он вычисляет выражение внутри ссылки на массив:
"string @{[2+2]} string"
и он будет оценивать 2 + 2 внутри строки.
Как насчет PHP. Есть ли в PHP такая конструкция, которая позволяет оценивать выражения внутри строки (через интерполяцию)?
$x = "string ".(2+2)." string";
В поисках того же я сделал следующее, и вы могли бы даже смоделировать этот 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;
}