Иногда я получаю оценку тела, как этот.
$result = eval(45 + hjh + 78 + 89 + hello);
Мне нужно заменить все неисчислимое (например, «hjh») на ноль везде в выражении, чтобы получить как это.
$result = eval(45 + 0 + 78 + 89 + 0);






Что-то вроде этого может делать то, что вы хотите:
$s = "45 + hjh + 78 + 89 + hello";
$s = preg_replace("%[^-+*/0-9 ]+%","0",$s);
$result = eval ("return $s;");
echo "R=$result\n";
Но это обнаружение incalculables в регулярном выражении, вероятно, сломается в случае ввода большего количества творческий.
Замените любой символ, который НЕ является ^ в $allowed, на 0. Используемый разделитель ~ не может быть в $allowed, поэтому при необходимости вы можете изменить его:
$allowed = ' 0-9.*/+-'; //add everything that is allowed
$string = preg_replace("~[^$allowed]+~", '0', $string);
Однако это изменит такие вещи, как 1a + 1 на 10 + 1.