Php 从另一个文件检索后执行数学运算
我有一个文本文件(math.txt),里面可以写任何类型的算术运算。我必须使用PHP读取文件并确定输出。我使用下面提到的代码来读取文件的内容Php 从另一个文件检索后执行数学运算,php,file,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)。我不明白
$file = 'math.txt'; // 2+3 is written in math.txt
$open = fopen($file, 'r');
$read = fgets($open);
$close = fclose($open);
使用上面的代码,我得到了内容。但是,回显内容是显示原始内容(即2+3),而不是显示输出(即5)。我不明白在这种情况下我该怎么办
在此方面的任何帮助都将不胜感激。提前谢谢
但回显内容是显示原始内容(即2+3)
而不是显示输出(即5)
这完全是意料之中的行为。从文件中读取字符串。PHP如何知道您希望它计算表达式
您必须实现一个简单的解析器(或在Internet上搜索),用于分析表达式并填充结果
在以下方面提供了非常好的功能:
但是请注意,如果输入包含语法错误,这仍然会停止脚本执行
这里有一个更好的库,它使用real解析器:根据操作符读取文件解析
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];
}
我觉得这样说有点不好,但也许eval会解决问题?@jureslak It可以解决这样的问题,但是——正如您所指出的——程序员会对此感到不好;)它引入了安全漏洞。这是家庭作业吗?我知道这一点,但我也提到我对下一步一无所知。查看此网站,未发现相关帖子。所以,我想问这个问题。如果您向我们展示您的完整代码,我们可以更好地帮助您找到解决方案。即:
$total=$var1+$var2;echo$总计代码>如果算术表达式是(2+3)*3,上面的代码是否支持它?@Debashis否编写的此解决方案不处理括号。其他需要注意的事项包括空格,甚至可能会自动将字符串转换为数字数据类型(特别是当此类字符串包含括号和空格时)。最佳实践是明确告诉php要做什么。
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];
}