0

如何使用机器学习或其他一些技术来区分什么是数学用户输入和什么不是 PHP 中的数学用户输入?

通过数学用户输入,我的意思是可以计算/解决的数学语句。

因此,我构建了一个可以处理 PHP 中基本算术的计算器。之前,我通过用户输入来检查它是否是可以计算的数学语句。如果不是那么echo "can not be computed";

所以在伪代码/半代码中:

function isComputable($input){
    /* code I need help with here */
}
$userInput = $_GET['input'];
if(isComputable($userInput){
    compute($userInput);
}
else{
    echo "can not be computed";
}

在 PHP 中执行此操作的最佳方法是什么?

4

3 回答 3

1

据我了解,OP已经构建了计算器。他不想评估表达式,他只想知道给定的字符串是否是数学表达式。为什么不尝试机器学习方法?您可以使用一些可接受的数学表达式示例来训练分类器。

您可以使用Wit等在线 API来尝试这种方法。

于 2013-07-09T15:47:47.807 回答
1

调车码算法是解决这个问题的好方法。您可以在线找到许多 PHP 中调车场算法的实现。只需要一个堆栈和一个队列数据结构来检查一个表达式是否正确。

于 2013-07-06T01:15:03.800 回答
0

做一个你描述的那种类型的PHP(或JavaScript,就此而言)“计算器”的最快方法是

  1. 验证输入以确保它包含的唯一字符是十进制数字、括号和符号+, -,*/, 然后
  2. 将该字符串传递给 evileval函数。

你会得到一个结果或一个问题。当然,eval众所周知,使用是危险的,大多数人不会使用它(请参阅文档中的警告!)在这种情况下,人们可能会提出这样的论点:“至少如果我确保只有数字、括号、和那里的操作员,那么我猜 eval 将是安全的。”

但是,您最好不要冒险。您应该定义一些算术表达式语法,然后使用解析器来验证字符串并进行评估。这不是一笔微不足道的代码,但有人已经在 Stack Overflow 上完成了这项工作——因此请为您的计算器采用该代码。

滚动你自己的求值器的好处(除了不必向你的朋友解释你使用的eval:) )是你可以添加你自己的运算符,甚至可以用任意精度的数学做一些很好的技巧。这不是只需要五分钟的事情,但它是一个有用的练习。

于 2013-07-06T00:33:58.037 回答