Php preg_替换总和中的任何单词
有时我会像这样评估身体Php preg_替换总和中的任何单词,php,preg-replace,Php,Preg Replace,有时我会像这样评估身体 $result = eval(45 + hjh + 78 + 89 + hello); $result = eval(45 + 0 + 78 + 89 + 0); 我需要将表达式中的所有不可计算项(如“hjh”)替换为零,以得到这样的结果 $result = eval(45 + hjh + 78 + 89 + hello); $result = eval(45 + 0 + 78 + 89 + 0); 这样的事情可能会满足您的要求: $s = "45 + hjh +
$result = eval(45 + hjh + 78 + 89 + hello);
$result = eval(45 + 0 + 78 + 89 + 0);
我需要将表达式中的所有不可计算项(如“hjh”)替换为零,以得到这样的结果
$result = eval(45 + hjh + 78 + 89 + hello);
$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";
但是在正则表达式中检测到的
不可计算的可能会在输入更具创造性的情况下中断。用0
替换$allowed
中不允许的任何字符。使用的delimeter~
不能在$allowed
中,因此您可以根据需要进行更改:
$allowed = ' 0-9.*/+-'; //add everything that is allowed
$string = preg_replace("~[^$allowed]+~", '0', $string);
但是,这会将类似于1a+1
的内容更改为10+1
您在eval
中失去了我,我猜您所说的hjh是指一个字符串:“hjh”?我说的对吗?我不喜欢什么?你认为我每次都使用eval在php中求和吗?是的,我需要将任何字符串删除为0,并将表达式保存为eval(四舍五入(45+0+78+89+0));我需要保存“回合”