preg_replace总和中的任何单词

时间:2019-03-22 14:27:47

标签: php preg-replace

有时候我会像这样被评估。

$result = eval(45 + hjh + 78 + 89 + hello);

我需要在表达式中的所有位置将所有不可计算的(如“ hjh”)替换为零,以得到这样的结果。

$result = eval(45 + 0 + 78 + 89 + 0);

2 个答案:

答案 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