比较不完全匹配的字符串

时间:2013-04-25 01:31:31

标签: php preg-match-all

我正在为单一课程做简短的答案测验。基本上学生必须输入答案/关键词。我使用preg_match_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>";

例如:

提交的答案:硬件,软件

在数据库中回答:

  1. 硬件:通过执行指令处理数据;提供输入和输出。
  2. 软件:系统执行的指令。
  3. 数据:事实和观察的基本表现;原始事实。
  4. 通讯:在不同系统之间共享数据和处理;通信渠道,接口硬件和软件。
  5. 该功能评估为错误答案。我查了正则表达式,但不认为这是为了这个。任何帮助将不胜感激。感谢。

    Atikah

1 个答案:

答案 0 :(得分:1)

您始终可以将答案分成各个部分并运行检查:

$answers = explode(",", $ans[$arr_ind]);
foreach ($answers as $answer) {
    $answer = trim($answer);
    if (stripos($atext[$arr_ind], $answer) !== false)
        // correct
    else
        // incorrect
}

我也回答了你之前提出的问题,我认为POSTed答案会进入 $ ans [] 吗?这就是第一行中引用的内容,但是根据需要切换数组。

stripos 将使用更加友好的语法和更快的执行来执行与* preg_match *相同的操作。