尽管我不建议
eval为此使用(这 不是 解决方案),但问题是
eval期望完整的代码行,而不仅仅是片段。
$ma ="2+10";$p = eval('return '.$ma.';');print $p;
应该做你想做的。
更好的解决方案是为您的数学表达式编写一个标记器/解析器。这是一个非常简单的基于正则表达式的例子。
$ma = "2+10";if(preg_match('/(d+)(?:s*)([+-*/])(?:s*)(d+)/', $ma, $matches) !== FALSE){ $operator = $matches[2]; switch($operator){ case '+': $p = $matches[1] + $matches[3]; break; case '-': $p = $matches[1] - $matches[3]; break; case '*': $p = $matches[1] * $matches[3]; break; case '/': $p = $matches[1] / $matches[3]; break; } echo $p;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)