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

如何使用机器学习或其他技术来区分PHP中哪些是数学用户输入,哪些不是数学用户输入

所谓数学用户输入,我指的是可以计算/求解的数学语句

因此,我构建了一个计算器,可以用PHP处理基本的算术运算。 之前,我传递用户输入,我想检查它是否是一个可以计算的数学语句。如果不是,则
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)“计算器”的最快方法是

  • 验证输入以确保其包含的唯一字符是十进制数字、括号和符号
    +
    -
    *
    /
    ,然后
  • 将该字符串传递给evil
    eval
    函数
  • 你要么会得到结果,要么会遇到问题。当然,使用
    eval
    是危险的,大多数人不会使用它(参见文档中的!)在这种情况下,人们可能会提出这样的论点:“至少如果我确保那里只有数字、参数和运算符,那么我猜eval是安全的。”

    不过,你最好不要冒险。您应该定义一些算术表达式的语法,然后使用解析器验证字符串并进行计算。这不是一个微不足道的代码量,但是——因此,在计算器中采用该代码


    滚动您自己的计算器的优点(除了不必向您的朋友解释您使用了
    eval
    :)之外)是您可以添加自己的运算符,甚至可以对任意精度的数学进行一些巧妙的操作。这不是只需要五分钟的事情,但它是一个有用的练习。

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

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


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

    我不清楚您的问题。你对表达式验证有问题吗?@MuhammedHedayet目前我只是使用一个正则表达式来查找数字、空格、数学运算符和数字。我觉得这太具体了。我在寻找更广泛的东西。那么我想这会满足你的要求:)@MuhammedHedayet看起来很棒。你知道有什么PHP实现吗?如果是这样,请链接并发布一个答案,这样我就可以选择正确的答案。@DjangoJohnson,你仍然需要一些词汇分析。不幸的是,正则表达式。