Замените любой символ, который НЕ ^
в $allowed
, на 0
. Используемый разделитель ~
не может быть в $allowed
, поэтому вы можете изменить его при необходимости:
$allowed = ' 0-9.*/+-'; //add everything that is allowed
$string = preg_replace("~[^$allowed]+~", '0', $string);
Однако это изменит такие вещи, как 1a + 1
на 10 + 1
.