Php 区分数学用户输入和所有其他输入
如何使用机器学习或其他技术来区分PHP中哪些是数学用户输入,哪些不是数学用户输入 所谓数学用户输入,我指的是可以计算/求解的数学语句 因此,我构建了一个计算器,可以用PHP处理基本的算术运算。 之前,我传递用户输入,我想检查它是否是一个可以计算的数学语句。如果不是,则Php 区分数学用户输入和所有其他输入,php,math,machine-learning,nlp,Php,Math,Machine Learning,Nlp,如何使用机器学习或其他技术来区分PHP中哪些是数学用户输入,哪些不是数学用户输入 所谓数学用户输入,我指的是可以计算/求解的数学语句 因此,我构建了一个计算器,可以用PHP处理基本的算术运算。 之前,我传递用户输入,我想检查它是否是一个可以计算的数学语句。如果不是,则echo“无法计算” 因此,在伪码/半码中: function isComputable($input){ /* code I need help with here */ } $userInput = $_GET['inp
echo“无法计算”代码>
因此,在伪码/半码中:
function isComputable($input){
/* code I need help with here */
}
$userInput = $_GET['input'];
if(isComputable($userInput){
compute($userInput);
}
else{
echo "can not be computed";
}
在PHP中执行此操作的最佳方法是什么?执行您描述的类型的PHP(或JavaScript)“计算器”的最快方法是
验证输入以确保其包含的唯一字符是十进制数字、括号和符号+
、-
、*
和/
,然后
将该字符串传递给evileval
函数
你要么会得到结果,要么会遇到问题。当然,使用eval
是危险的,大多数人不会使用它(参见文档中的!)在这种情况下,人们可能会提出这样的论点:“至少如果我确保那里只有数字、参数和运算符,那么我猜eval是安全的。”
不过,你最好不要冒险。您应该定义一些算术表达式的语法,然后使用解析器验证字符串并进行计算。这不是一个微不足道的代码量,但是——因此,在计算器中采用该代码
滚动您自己的计算器的优点(除了不必向您的朋友解释您使用了eval
:)之外)是您可以添加自己的运算符,甚至可以对任意精度的数学进行一些巧妙的操作。这不是只需要五分钟的事情,但它是一个有用的练习。是解决这个问题的好方法。您可以在PHP中在线找到许多调车场算法的实现。它只需要一个堆栈和一个队列数据结构来检查表达式是否正确。据我所知,OP已经构建了计算器。他不想计算表达式,他只想知道给定的字符串是否是数学表达式。为什么不试试机器学习方法呢?您可以使用几个可接受的数学表达式示例来训练分类器
您可以使用在线API来尝试这种方法。我不清楚您的问题。你对表达式验证有问题吗?@MuhammedHedayet目前我只是使用一个正则表达式来查找数字、空格、数学运算符和数字。我觉得这太具体了。我在寻找更广泛的东西。那么我想这会满足你的要求:)@MuhammedHedayet看起来很棒。你知道有什么PHP实现吗?如果是这样,请链接并发布一个答案,这样我就可以选择正确的答案。@DjangoJohnson,你仍然需要一些词汇分析。不幸的是,正则表达式。