问题描述:英语科下载word时,选的题型有:完形填空和词汇运用两种,但下载出来题的序号排序混乱。
1 完形填空序号混乱解决
网站上生成的如下:
而我生成的word如下:
原因在于:正则表达式出了问题,如下:
$wanxingxuhaoFlag=preg_match_all('/<uval="">(1\d{1,2}|2[01][0-9]|22[0-7]|[1-9][0-9]|[1-9])<\/u>/',$contents_topic,$match);
(1\d{1,2}|2[01][0-9]|22[0-7]|[1-9][0-9]|[1-9])
解析:\d:匹配一个数字字符。等价于[0-9]。
改成:([0-9]*[1-9][0-9])
软件测试成功,截图如下:
原因在于:22,25多了个空格,匹配时忽略空格就成了。
修改语句如下:
(\S*[0-9]*[1-9][0-9])
2.词汇运用乱序问题解决
2.1 题目乱序解决
对于词汇运用这类题,比方说有三道,应该都不标号,里面的小题号连起来就成。
两道题下载时是对的:
下面两道题时下载报错如下:
错误原因:下面那个大题(用方框中所给词填空那个题,由于编辑没把答案分开,是一个整体,所以此类题只能当作一个题来处理)
上述主要原因在于:当子题目判断时,由于两道题都是词汇运用题,第一个有子题目,第二道没子题目,当两道题合体输出时,子题目的值按最后一个处理,这样就导致有子题目的大题上也出现了序号。
解决办法:换一种方法,检测子题目即可,如下:
运行成功,下载如下:
2.2 答案乱序解决
现在答案是这样的:
原因分析:也应该是子题目误判造成的、
解决办法:改子题目判断检测,修改如下函数:
改了两处:
判断子题目时,不用subQstNum
这样以改,答案显示正确!
2016年9月8日星期四