现有字符串 0<99<100 或者 100>88
请教各位前辈,我如何在PHP里判断这写数学意义上的公式是否合理??
回复讨论(解决方案)
测试下不就知道了
$str='100>88';eval("\$a=".$str.";");var_dump($a);
0<99<100不行,因为不符合php语言写法$a=0<99<100;这样肯定报错
$str='100>88';eval("\$a=".$str.";");var_dump($a);
0<99<100不行,因为不符合php语言写法$a=0<99<100;这样肯定报错
答案是我要的,谢谢。
忘记排版了,不知道有没有更简单的了=-]+$/', $str, $matches)){return false;}//按照, <=, >=进行切割$left = '';$right = '';$opt = '';while($str){if(!$left){//获取算术式左边值preg_match('/^[0-9.+*\/%-]+/', $str, $matches);if(!is_array($matches) || !isset($matches[0])){return false;}$left = $matches[0];$str = substr($str, strlen($left));}//获取算术式操作符preg_match('/^[<>]=?/', $str, $matches);if(!is_array($matches) || !isset($matches[0])){return false;}$opt = $matches[0];$str = substr($str, strlen($opt));//获取算术式右边值preg_match('/^[0-9.+*\/%-]+/', $str, $matches);if(!is_array($matches) || !isset($matches[0])){return false;}$right = $matches[0];$str = substr($str, strlen($right));//算术式比较eval('$result = ' . $left . $opt . $right . ';');if(false === $result){return false;}//将右边值赋值给下一次比较的左边值$left = $right;}return true;}//举例var_dump(check('0<99<100')); //truevar_dump(check('100 > 88')); //truevar_dump(check('10 < 22 < 3*8 < 5.6*5 < 100 - 30')); //truevar_dump( check('10 < 9.9999')); //falsevar_dump(check('10 > 9 + 0.9999')); //truevar_dump(check('9 % 7 <= 2 <= 2')); //truevar_dump(check('1 > 1')); //falsevar_dump(check('23<32<77')); //truevar_dump(check('1 <= 1 <= 1')); //truevar_dump(check('1 <= 1 < 1')); //falsevar_dump(check('2 < 2.00000')); //false
本文原创发布php中文网,转载请注明出处,感谢您的尊重!