有时候我会像这样被评估。
$result = eval(45 + hjh + 78 + 89 + hello);
我需要在表达式中的所有位置将所有不可计算的(如“ hjh”)替换为零,以得到这样的结果。
$result = eval(45 + 0 + 78 + 89 + 0);
答案 0 :(得分:1)
类似的事情可能会满足您的要求
$s = "45 + hjh + 78 + 89 + hello";
$s = preg_replace("%[^-+*/0-9 ]+%","0",$s);
$result = eval ("return $s;");
echo "R=$result\n";
但是,在输入更多 creative 的情况下,对正则表达式incalculables
的检测可能会中断。
答案 1 :(得分:1)
将^
中非$allowed
的任何字符替换为0
。 ~
使用的分度符不能位于$allowed
中,因此您可以根据需要进行更改:
$allowed = ' 0-9.*/+-'; //add everything that is allowed
$string = preg_replace("~[^$allowed]+~", '0', $string);
但是,这会将1a + 1
更改为10 + 1
。