我正在为单一课程做简短的答案测验。基本上学生必须输入答案/关键词。我使用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>";
例如:
提交的答案:硬件,软件
在数据库中回答:
该功能评估为错误答案。我查了正则表达式,但不认为这是为了这个。任何帮助将不胜感激。感谢。
Atikah
答案 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 *相同的操作。