编辑代码

<?php 
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
$sta_str = "
试卷名称:会计试题模板###
一、选择题﹙每小题2分,共4分﹚###
1.会计核算的依据和填制会计凭证、登记会计账簿、编制财务会计报告的基础是( )。###
A.相关的会计法律制度###
B.会计账目###
C.原始凭证###
D.实际发生的经济业务事项###
答案:D###
解析:本题考核会计核算的总体要求。《会计法》第九条规定,各单位必须根据实际发生的经济业务事项进行会计核算、填制会计凭证、登记会计账簿、编制财务会计报告。###
###
2.根据《会计法》的规定,对于未按规定保管会计资料,致使会计资料毁损、灭失的单位,县级以上人民政府财政部门责令限期改正,并可以处( )。###
A.2000元以上50000元以下的罚款###
B.3000元以上50000元以下的罚款###
C.4000元以上50000以下的罚款###
D.5000元以上50000以下的罚款###
答案:B###
解析: 对于未按规定保管会计资料,致使会计资料毁损、灭失的单位,由县级以上人民政府财政部门责令限期改正,可以对单位并处3000元以上50000元以下的罚款;对其直接负责的主管人员和其他直接责任人员,可以处2000元以上20000元以下的罚款;属于国家工作人员的,还应当由其所在单位或者有关单位依法给予行政处分。###
二、判断题(每小题3分,共3分)###
1.“我思故我在”和“我在故我思”体现了可知论与不可知论的对立。###
答案:错误###
解析:###
正确可表述为:T/TRUE/√/对/正确###
错误可表述为:F/False/×/错/错误###
###
三、填空题(每小题2分,共4分)###
1.从事任何工作都会面对处理工作计划与工作实际的关系,这在哲学上就是处理(   )。###
答案:思维和存在的关系###
###

";
$sta_arr = explode('###',$sta_str);
$reg_l1='/^(零|一|二|三|四|五|六|七|八|九|十|百)+(.|、)/u';
$reg_l2='/^[0-9]+(.|、)/u';
$reg_l3='/^[a-zA-Z]+(.|、)/u';
$reg_lda='/^答案(:|:)/u';
$reg_ljx='/^解析(:|:)/u';
$reg_lfs='/^分数(:|:)/u';
$pageContent = '';
$quedata = [];
$qobj = [];
$last_label='';
$last_tx='';
foreach ($sta_arr  as $sub_cnt) {
    $sub_cnt = ltrim($sub_cnt);
	if (preg_match($reg_l1, $sub_cnt)) {
        $last_label='题型';
        $q_type = preg_replace($reg_l1, '', $sub_cnt);
        preg_match('/(\(|(|﹙|\s)+/', $sub_cnt, $mt1);
        if(count($mt1)>0){
            $q_type = strstr($sub_cnt,$mt1[0],TRUE);//题型
            $last_tx = preg_replace($reg_l1, '', $q_type); //题目
            preg_match('/每小题[0-9]+分/', $sub_cnt, $matches1);
            if(count($matches1)>0){
                preg_match('/[0-9]+/', $matches1[0], $msp1);
                $per_scop = $msp1[0]; //每道题分数
                $qobj['每题分数']=$per_scop;
            }
            preg_match('/共[0-9]+分/', $sub_cnt, $matches2);
            if(count($matches2)>0){
                preg_match('/[0-9]+/', $matches2[0], $msp2);
                $total_scop = $msp2[0]; //题目总分数
                $qobj['题目总分数']=$total_scop;
            }
             
        }
	}else if (preg_match($reg_l2, $sub_cnt)) {
        $last_label='题目';
        if($last_tx!='' && array_key_exists('题目',$qobj)){
            array_push($quedata,$qobj);
            $qobj=[];
        } 
        $qobj['题型']=$last_tx;
        $cnt_str = preg_replace($reg_l2, '', $sub_cnt); //题目
        $qobj['题目']=$cnt_str;
	}else if (preg_match($reg_l3, $sub_cnt)) {
		$c_t = substr($sub_cnt,0,1); //选项几
		$c_str = preg_replace($reg_l3,'',$sub_cnt); //选项内容
        $qobj['选项'.$c_t]=$c_str;
        $last_label='选项'.$c_t;
	}else if (preg_match($reg_lda, $sub_cnt)) {
        $last_label='答案';
		$c_da = preg_replace($reg_lda,'',$sub_cnt); //答案的内容
        $c_da = preg_replace('/\s+/','',$c_da);
        if($qobj['题型']=='选择题'){
            $da_lst = str_split($c_da);//答案数组
            $qobj['答案']=$da_lst;
        }else if($qobj['题型']=='判断题'){
            $da_tmp = preg_replace('/(TRUE|√|对|正确)/u','T',$c_da);
            $da_tmp = preg_replace('/(False|×|错误)/u','F',$da_tmp);
            $da_tmp = preg_replace('/(错)/u','F',$da_tmp);
            $qobj['答案']=$da_tmp;
        }else{
            $qobj['答案']=$c_da;
        }
       
	}else if (preg_match($reg_ljx, $sub_cnt)) {
        $last_label='解析';
		$jx_str = trim(preg_replace($reg_ljx,'',$sub_cnt)); //解析的内容
        $qobj['解析']=$jx_str;
	}else if (preg_match($reg_lfs, $sub_cnt)) {
        $last_label='分数';
		$fs_str = trim(preg_replace($reg_lfs,'',$sub_cnt)); //解析的内容
        $qobj['分数']=$fs_str;
	}else{
        if($last_label!='' && array_key_exists($last_label,$qobj) && $sub_cnt!=NULL){
            $qobj[$last_label]=$qobj[$last_label].'\n'.$sub_cnt;
        }

    }
    
}
if(count($qobj)>0){
        array_push($quedata,$qobj);
}
var_dump($quedata);

echo '-----------end------------';