我有像“((2*160)+53)*1.00000”这样的字符串,我将其接收到Twig模板中的数据。如何进行计算并返回计算出的数字,而不是数学的纯字符串?
因此,预期输出只是数学结果中的一个数字(此处为 373)。
添加:实际上接收到的字符串是“((V*160)+53)*1.00000”,其中V被替换为一些数字。
您可以使用 TwigExtension 轻松创建自定义 Twig 函数(请参阅 https://symfony.com/doc/5.2/templated/twig_extension.html#create-the-extension-class)。
喜欢:
<?php
namespace App\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class AppExtension extends AbstractExtension
{
public function getFunctions()
{
return [
new TwigFunction('calculate', [$this, 'calculateExpression']),
];
}
public function calculateExpression(string $input, array $extraValues = [])
{
foreach ($extraValues as $key => $value) {
$input = str_replace($key, $value, $extraValues);
}
return eval("return $input");
}
}
或者在 Twig 模板中像这样使用:
{{ calculate('((V*160)+53)*1.00000', {V: 53}) }}