当前位置: 首页 > news >正文

PhpWord导入试卷

规定word导入格式

1、[单选题][2024][一般]题目1

A.选项1

B.选项2

C.选项3

D.选项4

答案:D

试题图片(上传多媒体图片):

分数:2

答案解析:

2、[多选题][2024][困难]题目2

A.选项1

B.选项2

C.选项3

D.选项4

E.选项5

答案:AE

分数:2

答案解析:

3、[填空题][2024][一般]题目3

答案:答案1、答案2

分数:3

答案解析:

4、[简答题][2017][一般]题目4

答案:答案内容

分数:5

设置关键词:关键词1、关键词2

答案解析:

 PHP获取word内容并导入数据库的代码:

<?phppublic function import_word() {$word = "question.docx";$phpWord = \PhpOffice\PhpWord\IOFactory::load($word, 'Word2007', 'utf-8');$sections = $phpWord->getSections();$wordData = [];//将内容分句子foreach ($sections as $section) {$elements = $section->getElements();foreach ($elements as $element) {if ($element instanceof \PhpOffice\PhpWord\Element\TextRun) {$wordData[] = $element->getText();foreach($element->getElements() as $text){//导入每道题的图片if ($text instanceof \PhpOffice\PhpWord\Element\Image) {$file_path = './uploads/images'.uniqid().'.jpg';file_put_contents($file_path, trim($text->getImageString()));$wordData[] = 'image:'.Config::get('web_site_domain').ltrim($file_path, '.');} }}}}//拆分句子$questionData = [];$sectionData = [];foreach($wordData as $val){if($val){if(strpos($val, "[单选题]") !== false){if ($sectionData) {$questionData[] = $sectionData;$sectionData = [];}}else if(strpos($val, "[多选题]") !== false){if ($sectionData) {$questionData[] = $sectionData;$sectionData = [];}}else if(strpos($val, "[填空题]") !== false){if ($sectionData) {$questionData[] = $sectionData;$sectionData = [];}}else if(strpos($val, "[简答题]") !== false){if ($sectionData) {$questionData[] = $sectionData;$sectionData = [];}}$sectionData[] = $val;}}if($sectionData){$questionData[] = $sectionData;}//对试题数组过滤数据$questions = [];if ($questionData) {foreach ($questionData as $key1=>$val1) {$title = "";$answer = "";$options = "";$score = 0;$question_type = 0;$year = 0;$difficulty = 0;$question_keywords = "";$answer_key = "";$title = trim($val1[0]);$index1 = strpos($title, '[');$title = substr($title, $index1);if (strpos($title, "[单选题]") === 0) {$question_type = 1;$title = str_replace("[单选题]", "", $title);} else if (strpos($title, "[多选题]") === 0) {$question_type = 2;$title = str_replace("[多选题]", "", $title);} else if (strpos($title, "[填空题]") === 0) {$question_type = 3;$title = str_replace("[填空题]", "", $title);} else if (strpos($title, "[简答题]") === 0) {$question_type = 4;$title = str_replace("[简答题]", "", $title);}preg_match_all("/\[\d+\]/", $title, $matchs);if (isset($matchs[0][0]) && $matchs[0][0]) {$year = str_replace(["[", "]"], "", $matchs[0][0]);$title = str_replace("[{$year}]", "", $title);} else {$title = str_replace("[]", "", $title);}if (strpos($title, "[容易]") === 0) {$difficulty = 1;$title = str_replace("[容易]", "", $title);} else if (strpos($title, "[一般]") === 0) {$difficulty = 2;$title = str_replace("[一般]", "", $title);} else if (strpos($title, "[困难]") === 0) {$difficulty = 3;$title = str_replace("[困难]", "", $title);} else {$title = str_replace("[]", "", $title);}unset($val1[0]);$optionData = [];$images = [];foreach ($val1 as $k1 => $v1) {for ($i = 0; $i < 26; $i++) {$option_id = chr($i + 65).".";if (strpos($v1, $option_id) === 0) {$optionData[] = str_replace($option_id, "", $v1);}}if(strpos($v1, "image:") === 0) {$images[] = str_replace("image:", "", $v1);}if (strpos($v1, "答案:") === 0) {$answer = str_replace("答案:", "", $v1);}if (strpos($v1, "分数:") === 0) {$score = str_replace("分数:", "", $v1);}if (strpos($v1, "答案解析:") === 0) {$answer_key = str_replace("答案解析:", "", $v1);}if (strpos($v1, "设置关键词:") === 0) {$question_keywords = str_replace("设置关键词:", "", $v1);}}$question_num = $key1 + 1;//判断每道题是否符合规则if(!$title){$this->error("第".$question_num."道题【标题有误】");}if(!$question_type){$this->error("第".$question_num."道题【题型有误】");}if(!$answer){$this->error("第".$question_num."道题【答案有误】");}if(!$difficulty){$this->error("第".$question_num."道题【难度有误】");}if (in_array(trim($question_type), [1, 2])) {if(!$optionData){$this->error("第".$question_num."道题【选项有误】");}$options = [];foreach ($optionData as $k2 => $v2) {$options[$k2]['options_title'] = $v2;$options[$k2]['options_value'] = 0;}$options = FreelistoftestquestionsModel::validateAnswer($options, trim($answer));if(!$options){$this->error("第".$question_num."道题【选项有误】");}}$questions[] = ['title' => trim($title),'options' => $options,'answer' => trim($answer),'images' => implode(',', $images),'question_type' => $question_type,'year' => trim($year),'score' => intval($score),'question_keywords' => trim($question_keywords),'difficulty' => $difficulty,'answer_key' => trim($answer_key),'status' => 1,'create_time' => time(),];}}if ($questions) {if (!QuestionsModel::insertAll($questions)) {return false;}return true;} else {return false;}}

相关文章:

PhpWord导入试卷

规定word导入格式 1、[单选题][2024][一般]题目1 A.选项1 B.选项2 C.选项3 D.选项4 答案&#xff1a;D 试题图片&#xff08;上传多媒体图片&#xff09;&#xff1a; 分数&#xff1a;2 答案解析&#xff1a; 2、[多选题][2024][困难]题目2 A.选项1 B.选项2 C.选项3 D.选项4 E…...

C# 运算符重载 之前的小总结

C# 中支持运算符重载&#xff0c;所谓运算符重载就是我们可以使用自定义类型来重新定义 C# 中大多数运算符的功能。运算符重载需要通过 operator 关键字后跟运算符的形式来定义的&#xff0c;我们可以将被重新定义的运算符看作是具有特殊名称的函数&#xff0c;与其他函数一样&…...

XenCenter 2024 创建一个虚拟机

前言 实现&#xff0c;创建一个虚拟机&#xff0c;内存&#xff0c;cpu&#xff0c;磁盘&#xff0c;名称&#xff0c;网卡&#xff0c;配置 Xen Center 2024 download 创建虚拟机 选择系统类型 定义虚拟机名称 选择ISO镜像库 选择主服务器 分配虚拟机内存&#xff0c;cpu资源…...

tomcat 知多少

Tomcat的缺省端口&#xff1a; 默认端口为8080&#xff0c;可以通过在tomcat安装包conf目录下&#xff0c;service.xml中的Connector元素的port属性来修改端口。 tomcat 常见 Connector 运行模式(优化)&#xff1a; 这三种模式的不同之处如下&#xff1a; BIO &#xff1a; 一…...

【详细讲解语言模型的原理、实战与评估】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…...

Predict the Next “X” ,第四范式发布先知AIOS 5.0

今天&#xff0c;第四范式发布了先知AIOS 5.0&#xff0c;一款全新的行业大模型平台。 大语言模型的原理是根据历史单词去不断预测下一个单词&#xff0c;换一句常见的话&#xff1a;Predict the Next “Word”。 当前对于行业大模型的普遍认知就是沿用这种逻辑&#xff0c;用大…...

PCL使用4PCS配准

一、代码 C++ #include <pcl/registration/ia_fpcs.h> // 4PCS算法 #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/io/pcd_io.h> #include <pcl/io/ply_io.h> #include <boost/thread/thread.hpp> #include…...

【六 (2)机器学习-机器学习建模步骤/kaggle房价回归实战】

一、确定问题和目标&#xff1a; 1、业务需求分析&#xff1a; 与业务团队或相关利益方进行深入沟通&#xff0c;了解他们的需求和期望。 分析业务流程&#xff0c;找出可能的瓶颈、机会或挑战。 思考机器学习如何帮助解决这些问题或实现业务目标。 2、问题定义&#xff1a;…...

vue源码解析——vue如何将template转换为render函数

Vue 将模板&#xff08;template&#xff09;转换为渲染函数&#xff08;render function&#xff09;是 Vue 编译器的核心功能&#xff0c;它是 Vue 实现响应式和虚拟 DOM 的关键步骤。在 Vue 中&#xff0c;模板&#xff08;template&#xff09;是开发者编写的类似 HTML 的代…...

深入理解zookeeper

如果是zookeeper的初学者&#xff0c;可以看&#xff1a; zookeeper快速入门&#xff08;合集&#xff09;-CSDN博客 如果想要深入理解zookeeper&#xff0c;并在面试中取得更好的表现&#xff0c;可以看下面的文章&#xff0c;都是偏面试向的角度写的。 三分钟明白zookeeper…...

【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin LearnDash LMS 4.10.2及之前版本存在安全漏洞&#x…...

phpmyadmin页面getshell

0x00 前言 来到phpmyadmin页面后如何getshell呢&#xff1f;下面介绍两种方法 0x01 select into outfile直接写入 1、利用条件 对web目录需要有写权限能够使用单引号(root) 知道网站绝对路径(phpinfo/php探针/通过报错等) secure_file_priv没有具体值 2、查看secure_file…...

题目:学习static定义静态变量的用法

题目&#xff1a;学习static定义静态变量的用法    There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheate…...

【C++】编程规范之函数规则

对所有函数入参进行合法性检查 在编写函数时&#xff0c;应该始终对所有传入的参数进行合法性检查&#xff0c;以防止出现意外的错误或异常情况。这包括但不限于检查指针是否为空、整数是否在有效范围内、数组是否越界等等。通过对参数进行严格的合法性检查&#xff0c;可以避免…...

HTML常用的图片标签和超链接标签

目录 一.常用的图片标签和超链接标签&#xff1a; 1.超链接标签&#xff1a; 前言: 超链接的使用&#xff1a; target属性: 1)鼠标样式&#xff1a; 2)颜色及下划线: 总结: 2.图片标签&#xff1a; 前言: img的使用: 设置图片&#xff1a; 1.设置宽度和高度: 2.HTM…...

浏览器工作原理与实践--WebAPI:XMLHttpRequest是怎么实现的

在上一篇文章中我们介绍了setTimeout是如何结合渲染进程的循环系统工作的&#xff0c;那本篇文章我们就继续介绍另外一种类型的WebAPI——XMLHttpRequest。 自从网页中引入了JavaScript&#xff0c;我们就可以操作DOM树中任意一个节点&#xff0c;例如隐藏/显示节点、改变颜色、…...

TCP网络协议栈和Posix网络部分API总结

文章目录 Posix网络部分API综述TCP协议栈通信过程TCP三次握手和四次挥手&#xff08;看下图&#xff09;三次握手常见问题&#xff1f;为什么是三次握手而不是两次&#xff1f;三次握手和哪些函数有关&#xff1f;TCP的生命周期是从什么时候开始的&#xff1f; 四次挥手通信状态…...

《解释器模式(极简c++)》

本文章属于专栏- 概述 - 《设计模式&#xff08;极简c版&#xff09;》-CSDN博客 模式说明 方案&#xff1a; 对每个data建立一个单点解释器对象X&#xff0c;dataA和dataB之间的关系&#xff0c;建立一个关系解释器对象Y&#xff0c;这里的Y处理的是X1和X2。这样&#xff0c;…...

c#仿ppt案例

画曲线 namespace ppt2024 {public partial class Form1 : Form{public Form1(){InitializeComponent();}//存放所有点的位置信息List<Point> lstPosition new List<Point>();//控制开始画的时机bool isDrawing false;//鼠标点击开始画private void Form1_MouseD…...

10.图像高斯滤波的原理与FPGA实现思路

1.概念 高斯分布 图像滤波之高斯滤波介绍 图像处理算法|高斯滤波   高斯滤波(Gaussian filter)包含很多种&#xff0c;包括低通、高通、带通等&#xff0c;在图像上说的高斯滤波通常是指的高斯模糊(Gaussian Blur)&#xff0c;是一种高斯低通滤波。通常这个算法也可以用来模…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...