Php 比较非';不完全匹配

Php 比较非';不完全匹配,php,preg-match-all,Php,Preg Match All,我正在为一门大学课程做一个简短的回答测验。基本上,学生必须输入答案/关键词。我使用preg\u match\u all()进行字符串比较(用户答案和数据库中的答案)。我试着用一个词来回答,结果还行,但当它是一个短语提交时,就出现了一个问题 if(preg_match_all("/". $ans[$arr_ind]. "/i", " . $atext[$arr_ind] . ")){ echo "<p align='justify'><img sr

我正在为一门大学课程做一个简短的回答测验。基本上,学生必须输入答案/关键词。我使用
preg\u match\u all()
进行字符串比较(用户答案和数据库中的答案)。我试着用一个词来回答,结果还行,但当它是一个短语提交时,就出现了一个问题

    if(preg_match_all("/". $ans[$arr_ind]. "/i", " . $atext[$arr_ind] . ")){
            echo "<p align='justify'><img src='image/mark.png' border='0' width='20' height='20'></img><b> YOUR ANSWER: </b>". $ans[$arr_ind]. "</p>";
            $total = $total + 1;
            $correct = 1;
    }
    else
            echo "<p align='justify'><img src='image/cross.png' border='0' width='20' height='20'></img> <b>YOUR ANSWER: </b>". $ans[$arr_ind]. "</p>";
if(preg_match_all(“/”$ans[$arr_ind]。“/i”、“$atext[$arr_ind]。”){
回显“

你的答案:“.ans[$arr\u ind]”“

”; $total=$total+1; $correct=1; } 其他的 回应“

你的答案:”$ans[$arr_ind]。“

”;
例如:

提交的答案:硬件、软件

数据库中的答案:

  • 硬件:通过执行指令处理数据;提供输入和输出
  • 软件:由系统执行的指令
  • 数据:事实和观察的基本表现;原始事实
  • 通信:在不同系统之间共享数据和处理;通信通道、接口硬件和软件
  • 函数将其评估为不正确答案。我查过正则表达式,但不认为它适用于此。任何帮助都将不胜感激。谢谢


    Atikah

    您可以随时将答案分成各个部分,然后运行检查:

    $answers = explode(",", $ans[$arr_ind]);
    foreach ($answers as $answer) {
        $answer = trim($answer);
        if (stripos($atext[$arr_ind], $answer) !== false)
            // correct
        else
            // incorrect
    }
    
    我还回答了您之前的问题,我认为发布的答案包含$ans[]正确吗?这就是第一行中引用的内容,但是根据需要切换数组


    stripos将以更友好的语法和更快的执行速度完成与您的*preg_match*相同的操作。

    然后您应该将答案标记为单个单词并进行匹配。此外,由于学生可能不会使用逗号分隔数据,您可能希望按空格进行分解,然后删除逗号等无关数据,而不是按我的代码中所示的相反方式。您的解决方案为我做到了:)分解注意事项。非常感谢你。感谢您的帮助。如果我将字符串与多行数据进行比较,您能建议一种方法吗?