Выполнить расчет внутри строки PHP

У меня есть строка как

$str = "23 + %%val%%";

Теперь, если бы я хотел выполнить этот расчет, давая %%val%% значение, например 20, как я мог сделать?

0

Решение

Если вы действительно хотите сохранить этот формат, вы можете сделать это:

function calculate($string, $value) {
return str_replace('%%val%%', $value, $string);
}

$str = "23 + %%val%%";
$value = 25;
$result = eval('return '.calculate($str, $value).';');

var_dump($result); // int(48)

$result = eval('return '.calculate("16 + %%val%%", 10).';');

var_dump($result); // int(26)

Но будьте осторожны с Eval (см .: eval())

Языковая конструкция eval () очень опасна, поскольку она позволяет выполнять произвольный код PHP.

0

Другие решения

Ты не можешь PHP не является рекурсивно исполняемым, если вы не используете eval() (НЕ использование eval()). Почему ты не можешь просто сделать

$str = 23 + $val;

?

1

$a = 10;
$b = 10;
$c = 10;
$string = "a + b + c";

$result = eval('return ' . preg_replace('/([a-zA-Z0-9])+/', '\$$1', $string) . ';');
echo $result;

это будет эхо 30.

здесь есть еще один пост об этом Рассчитать сумму в строке

0

$str = "23 + {$value}"

Затем для выполнения расчета вам понадобится функция, которая принимает строку и разбивает целые числа и операторы. Выглядит как пустая трата, так как php не является строго типизированным, и вы можете легко конвертировать строки в целые числа.

0
По вопросам рекламы [email protected]