从另一个文件中检索后执行数学运算

时间:2013-08-11 14:09:08

标签: php file

我有一个文本文件(math.txt),可以在其中编写任何类型的算术运算。我必须使用PHP读取文件并确定输出。我使用下面提到的代码来读取文件的内容。

$file = 'math.txt';  // 2+3 is written in math.txt

$open = fopen($file, 'r');

$read = fgets($open);
$close = fclose($open);

使用上面的代码,我得到的内容。但回显内容是显示原始内容(即2 + 3)而不是显示输出(即5)。我不明白在这种情况下我该怎么做。

对此有任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:1)

  

但是回显内容是显示原始内容(即2 + 3)   而不是显示输出(即5)。

这是完全预期的行为。您从文件中读取字符串。 PHP应该如何知道你想要它来计算表达式?

您必须实现一个简单的解析器(或在Internet上搜索一个),该解析器会分析表达式并将结果记录下来。

dave1010one of his posts中提供了一个非常好的功能:

function do_maths($expression) {
  eval('$o = ' . preg_replace('/[^0-9\+\-\*\/\(\)\.]/', '', $expression) . ';');
  return $o;
}

echo do_maths('1+1');

但请注意,如果输入包含语法错误,这仍然可以暂停脚本执行!

这是一个更好的库,它使用真正的解析器:https://github.com/stuartwakefield/php-math-parser

答案 1 :(得分:0)

根据运算符

读取文件解析
        like     file=2*5;
             $open = fopen($file, 'r');

              $read = fgets($open);


                $key = preg_split("/[*+-\/]+/", $read);

                 $operator= substr($a, strpos($a,$key[1])-1,1);


                 if($operator=='+')
                 {
                 echo $key[0]+ $key[1];
                 }
                 else  if($operator=='-')
                 {
                 echo $key[0]- $key[1];
                 }
                 else  if($operator=='*')
                 {
                 echo $key[0]* $key[1];
                 }
                 else  if($operator=='/')
                 {
                 echo $key[0]/$key[1];
                 }