У меня есть строка как
$str = "23 + %%val%%";
Теперь, если бы я хотел выполнить этот расчет, давая %%val%%
значение, например 20, как я мог сделать?
Если вы действительно хотите сохранить этот формат, вы можете сделать это:
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.
Ты не можешь PHP не является рекурсивно исполняемым, если вы не используете eval()
(НЕ использование eval()
). Почему ты не можешь просто сделать
$str = 23 + $val;
?
$a = 10;
$b = 10;
$c = 10;
$string = "a + b + c";
$result = eval('return ' . preg_replace('/([a-zA-Z0-9])+/', '\$$1', $string) . ';');
echo $result;
это будет эхо 30.
здесь есть еще один пост об этом Рассчитать сумму в строке
$str = "23 + {$value}"
Затем для выполнения расчета вам понадобится функция, которая принимает строку и разбивает целые числа и операторы. Выглядит как пустая трата, так как php не является строго типизированным, и вы можете легко конвертировать строки в целые числа.