我想从字符串中计算数学表达式。我已经读过解决方案是使用eval()。但是当我尝试运行以下代码时:
<?php
$ma ="2+10";
$p = eval($ma);
print $p;
?>
它给了我以下错误:
解析错误:语法错误,C:\ xampp \ htdocs \ eclipseWorkspaceWebDev \ MandatoryHandinSite
\ tester.php(4)中意外的$ end:第1行上的eval()代码
有人知道解决这个问题的方法吗?
尽管我不建议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;
}
问题内容: 这将返回以下错误: 我知道可以解决此问题,但是难道没有更好,更重要的是更安全的方法来评估存储在字符串中的数学表达式吗? 问题答案: 可用于解析数学表达式。特别是, 显示了如何解析基本算术表达式。下面,我将fourFn重新包装为一个数字解析器类,以便于重用。
Evaluates simple math expression like 2*4 or 10/2 and outputs its result. You can use \ operator which is equivalent to round(a/b). 计算简单的数学表达式,比如2*4 或 10/2,并输出结果。\ 操作符结果同 round(a/b)。 Very useful in CS
我试图编写一个Java例程,从值计算数学表达式,如下所示: 我想避免很多if-then-else语句。我怎么能这么做?
问题内容: 有没有一种方法可以在不使用JavaScript的情况下计算存储在字符串中的公式? 通常我会做类似的事情 那么,有人知道吗? 问题答案: 这正是您应该使用eval的地方,否则您将不得不遍历字符串并生成数字。您将必须使用isNaN方法来执行此操作。
本文向大家介绍Python 执行字符串表达式函数(eval exec execfile),包括了Python 执行字符串表达式函数(eval exec execfile)的使用技巧和注意事项,需要的朋友参考一下 仔细研读后学习了三个函数: eval:计算字符串中的表达式 exec:执行字符串中的语句 execfile:用来执行一个文件 需注意的是,exec是一个语句,而eval()和execfil
本文向大家介绍使用MySQL计算字符串中的字符数,包括了使用MySQL计算字符串中的字符数的使用技巧和注意事项,需要的朋友参考一下 今天,我需要从一个表中获取一些数据,该表中另一个字符串中不止一个字符串出现。基本上,我需要从一个表中查找所有深度超过3级(即带有3个斜杠)的URL,但是意识到在MySQL中没有函数可以执行此操作。我找到了另一种方法,但它使我思考如何可能。 找到解决方案并不是很困难,我