我有一个文本文件(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)。我不明白在这种情况下我该怎么做。
对此有任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
但是回显内容是显示原始内容(即2 + 3) 而不是显示输出(即5)。
这是完全预期的行为。您从文件中读取字符串。 PHP应该如何知道你想要它来计算表达式?
您必须实现一个简单的解析器(或在Internet上搜索一个),该解析器会分析表达式并将结果记录下来。
dave1010在one 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];
}