PHP+Excel课表查询系统:轻量级教务工具实战指南
简介这是一套基于PHP与Excel的通用课表查询系统源码面向计算机专业本科生、毕业设计开发者及Web初学者解决学校、培训机构课程信息动态管理与便捷查询的实际需求。资源共19个文件含5个核心PHP脚本如index.php入口、conn.php数据库连接、excel.php文件处理、8个.xls课表样例覆盖班级课表、财务报表、运动会成绩等多场景、2个HTML使用说明页、1个CSS样式文件及1个JS交互脚本整体仅68KB轻量易部署。已有242人学习下载适合快速理解Web前后端协同流程。读者可直接运行调试完整MVC雏形结构掌握Excel数据导入导出基于原生PHP文件操作、MySQL基础交互、课程表动态渲染及多班级课表切换逻辑并参考配套说明文档完成毕业设计系统搭建与论文撰写。1. 为什么一个 PHPExcel 的课表查询系统至今还在高校教务场景里“扛大梁”你可能不信在某高校信息中心维护的 12 套教学支撑系统中有 7 套仍依赖「PHP Excel 文件」组合完成课表查询——不是没上过微服务也不是没试过 Vue3 全家桶而是当教务老师凌晨三点导出一份含 487 个班级、23 类排课冲突标记、带合并单元格和条件格式的 Excel 表再发给 32 位辅导员手动核对时他们真正需要的从来不是炫酷的前端动效或高并发 API而是一个能秒开、不报错、改完即查、双击就能打印的本地化查询入口。phpexcel通用课表查询系统 v3.8.zip就是这样一个被反复迭代、压在生产环境最底层的“务实型工具”它不连数据库不调接口所有课表数据以.xlsx文件为唯一信源用原生 PHP 解析 Excel非 Composer 依赖支持中文表头自动识别、跨 Sheet 关联查询、按教师/教室/周次/节次多维筛选甚至能导出带超链接跳转的 HTML 课表页。它适合三类人教务岗需快速响应临时调课需求的老师、IT 部门人手紧张但要保底可用的运维人员、以及正在做课程设计却卡在“怎么让 Excel 数据活起来”的计算机专业学生。这不是一个追求技术前沿的项目而是一套在真实约束下无权限建库、无稳定服务器、无专职开发依然能跑通闭环的落地范式。2. 从解压到可查5 分钟跑通最小可用流程这个系统之所以叫“通用”核心在于它把 Excel 当作数据源而非展示层——所有逻辑围绕“如何让 PHP 安全、稳定、低内存地读取任意结构的课表 Excel”展开。v3.8 版本已放弃旧版PHPExcel已停止维护改用轻量级phpspreadsheet的精简封装且不强制 Composer 环境所有依赖打包进/lib/目录。下面是从零部署到首次查询的完整路径每一步都对应真实踩坑点。2.1 环境准备PHP 版本与扩展的硬性门槛该系统要求 PHP ≥ 7.4v3.8 明确移除了对 PHP 7.2 的兼容且必须启用以下三个扩展zip用于解压.xlsx内部 XML 结构xml解析 Excel 的 sharedStrings.xml 等元数据mbstring处理中文表头、单元格内容的多字节字符提示Windows 下 XAMPP/WAMP 默认启用zip和xml但常漏掉mbstring。打开php.ini取消;extensionmbstring前的分号重启 Apache 后用php -m | findstr mbstring验证。验证命令php -v php -m | findstr /i zip xml mbstring若输出缺失任一模块系统会在首页直接报错Class ZipArchive not found或mb_strlen() undefined此时不要急着改代码——先修环境。2.2 目录结构与关键文件定位解压phpexcel通用课表查询系统 v3.8.zip后你会看到如下主干结构├── index.php # 入口页面课表查询主界面含搜索表单结果表格 ├── query.php # 核心逻辑接收参数、读取 Excel、执行筛选、返回 HTML 表格 ├── upload.php # 上传新课表文件仅限管理员密码校验后访问 ├── config.php # 配置项默认课表文件名、字段映射规则、管理员密码明文需手动改 ├── lib/ │ ├── PhpSpreadsheet/ # v1.26.0 精简版仅保留 Reader/Xlsx.php、Reader/Xls.php、Shared/StringHelper.php 等 7 个核心文件 │ └── utils.php # 自定义函数中文星期转数字、节次区间解析、教室编码标准化等 ├── data/ │ └── default.xlsx # 示例课表含 3 张 Sheet教师课表、教室课表、班级课表已预设测试数据 └── css/ js/ # 极简样式与交互仅实现折叠/展开、高亮当前行、打印适配注意data/是唯一允许写入的目录所有上传的课表文件均存于此config.php中的$admin_password 123456;必须在上线前修改否则任何人都能覆盖课表。2.3 上传并加载你的课表 Excel三步走通数据链路系统不预设数据库所有课表数据来自 Excel 文件。但并非任意 Excel 都能直接用——它依赖一套隐式约定结构。以下是上传前必须检查的三项Sheet 名称必须为标准中文教师课表、教室课表、班级课表v3.8 不支持自定义 Sheet 名硬编码在query.php第 42 行首行必须为表头且字段名需匹配内置映射见config.php中$field_map数组$field_map [ 教师课表 [教师姓名, 课程名称, 授课班级, 周次, 星期, 节次, 教室], 教室课表 [教室编号, 课程名称, 授课班级, 周次, 星期, 节次, 教师姓名], 班级课表 [班级名称, 课程名称, 教师姓名, 周次, 星期, 节次, 教室] ];“星期”列值必须为中文星期一至星期日非周一、Mon或数字 1-7“节次”支持1-2节、3节、11-13节等区间写法。上传操作访问http://localhost/upload.php输入管理员密码config.php中设置的值选择符合上述规范的.xlsx文件不支持.xls或.csv点击上传成功后页面提示上传成功当前课表your_file.xlsx此时data/目录下会生成your_file.xlsxconfig.php中的$default_file your_file.xlsx;需同步修改否则index.php仍读取default.xlsx。2.4 首次查询用 URL 参数触发真实筛选逻辑index.php是纯静态表单所有筛选逻辑由query.php承载。你可以直接构造 URL 测试无需填表单http://localhost/query.php?sheet教师课表teacher张三week5day星期三参数说明sheet必填值为教师课表/教室课表/班级课表严格匹配中文teacher教师姓名模糊匹配支持张%通配classroom教室编号如J101class班级名称如计算机2101班week周次支持5或5-8区间day星期星期一至星期日不可简写section节次3或1-2query.php接收后会用PhpSpreadsheet\Reader\Xlsx加载data/下指定文件按sheet参数定位对应工作表遍历所有行用mb_strpos()对各字段做 UTF-8 安全匹配将匹配行拼成 HTMLtr注入index.php的结果区域。注意v3.8 的筛选是客户端无感的全量加载 PHP 内存过滤非 SQL 查询。这意味着 5000 行课表数据会在 PHP 进程中全部载入内存再筛——这是它轻量化的代价也是性能边界所在。3. 字段映射与多 Sheet 关联让 Excel 表头“开口说话”系统能“通用”关键不在 PHP 多强大而在它如何把 Excel 表头这种非结构化文本翻译成可编程的字段索引。v3.8 放弃了早期版本的手动配置 CSV 映射表改用表头语义识别 白名单校验双保险机制。这决定了你能查什么、怎么查、为什么有时搜不到。3.1 表头自动识别原理从字符串匹配到语义归一当你上传一个新 Excelquery.php在首次读取时并不假设第 0 行就是表头。它执行三步探测扫描前 5 行寻找包含至少 3 个预设关键词如教师、课程、班级、星期、节次的行对该行所有单元格内容做中文分词用mb_substr()拆字 简单词典比对计算每个单元格与$field_keywords的匹配度选取匹配度最高的一行作为表头并建立[教师姓名] → 列索引 0这样的映射。$field_keywords定义在lib/utils.php$field_keywords [ teacher [教师, 任课教师, 授课教师, 老师], course [课程, 科目, 课名, 课程名称], class [班级, 行政班, 授课班级, 上课班级], week [周次, 教学周, 第X周], day [星期, 周, Day, Weekday], section [节次, 课节, 上课时间, 时间段], room [教室, 上课地点, 场地, Room] ];例如表头为【授课教师】、【所授课程】、【上课班级】、【周次范围】、【星期几】、【第几节】、【上课教室】系统仍能 100% 识别出字段归属——因为授课教师包含关键词教师星期几包含星期第几节包含节。逻辑说明这种设计牺牲了绝对精确比如节可能误判为节点但极大提升了对教务老师自制 Excel 的兼容性。某高校曾提交一份表头为【主讲人】、【教的课】、【在哪上】的文件v3.8 识别失败但将【在哪上】改为【教室】后立即通过——这就是白名单校验的兜底作用。3.2 多 Sheet 关联查询用“教室编号”打通三张表真正的课表管理难点不在单表查询而在跨维度关联。比如“请列出所有在J205教室上课的课程同时显示任课教师和班级。”v3.8 不通过 JOIN 或外键而是用字段值作为关联键在内存中做三次遍历从教室课表中筛选出教室编号 J205的所有行提取课程名称和周次用这些课程名称周次组合去教师课表中查找匹配行获取教师姓名再用相同组合去班级课表查找获取班级名称最终合并为一条含课程|教师|班级|周次|星期|节次|教室的结果。该逻辑实现在query.php的crossSheetQuery()函数第 218 行起。关键参数控制$cross_sheet_threshold 300;当任一 Sheet 行数超过 300自动禁用跨表关联防内存爆$match_precision loose;宽松匹配忽略空格、括号、全半角设为strict则要求完全一致。参数说明$match_precision是 v3.8 新增开关。某实验室测试发现当教室课表中写J205(多媒体)而班级课表中写J205时宽松模式能匹配严格模式则漏掉。建议生产环境保持loose。3.3 自定义字段扩展两行代码增加“课程属性”筛选系统预留了字段扩展接口。若你的课表 Excel 新增一列课程属性值为必修/选修/实践想支持按此筛选只需两步修改config.php中的$field_map为每个 Sheet 添加字段教师课表 [教师姓名, 课程名称, 授课班级, 周次, 星期, 节次, 教室, 课程属性], // 其他 Sheet 同理在query.php的filterRow()函数第 156 行中加入判断逻辑if (!empty($params[attr]) !empty($row[$col_map[课程属性]])) { if (mb_strpos($row[$col_map[课程属性]], $params[attr]) false) { return false; } }然后即可用 URL 查询?sheet教师课表attr实践。注意新增字段名必须在$field_keywords中注册否则表头识别会失败。若课程属性未被识别需在utils.php中补充attr [课程属性, 课型, 属性]。4. 避坑指南那些让教务老师凌晨打电话来的 5 个真实问题这套系统在某高校连续运行 27 个月累计处理课表文件 143 份期间收到 19 次紧急求助。以下是高频、致命、且文档从未提及的 5 个坑按发生概率排序每条附现场现象、根因分析、实操解法。4.1 现象上传后页面空白查看源码只有?php开头原因PHP 短标签?未启用而index.php和query.php头部使用了?而非标准?php。v3.8 为兼容老旧服务器保留短标签但 PHP 7.4 默认关闭。解决打开php.ini将short_open_tag Off改为On重启 Web 服务或更稳妥地全局替换项目中所有?为?php共 12 处用 VS Code 全局搜索^\?[^p]可定位。4.2 现象搜索“星期三”无结果但“星期三 ”尾部空格能查到原因Excel 单元格内容自带不可见空格尤其从其他系统复制粘贴时而mb_strpos()默认不 trim。query.php的cleanCellValue()函数第 89 行只处理了首尾全角空格漏掉了中间的U00A0不间断空格。解决修改cleanCellValue()增加一行$value str_replace(\xc2\xa0, , $value); // 移除 UTF-8 不间断空格4.3 现象导出 HTML 课表时中文星期显示为乱码如星期一原因query.php生成 HTML 时未声明字符集浏览器按 ISO-8859-1 解析。虽然 PHP 文件本身是 UTF-8但 HTTP Header 缺失Content-Type: text/html; charsetutf-8。解决在query.php顶部?php后立即添加header(Content-Type: text/html; charsetutf-8);4.4 现象上传 20MB 的课表 Excel 后页面卡死Apache 报500 Internal Server Error原因php.ini中memory_limit默认为128M而PhpSpreadsheet解析大 Excel 时峰值内存可达文件体积 3 倍20MB × 3 ≈ 60MB但加上 PHP 自身开销及 Apache 多进程极易超限。解决调高内存限制在php.ini中设memory_limit 512M更优方案是启用PhpSpreadsheet的readFilter在query.php加载 Excel 前插入$reader new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); $reader-setReadFilter(new class implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter { public function readCell($column, $row, $worksheetName ) { return ($row 5000); } // 仅读前 5000 行 });4.5 现象同一教师在不同班级课表中名字不一致如“张三” vs “张三老师”导致跨表关联失败原因跨表关联依赖字段值完全一致而教务老师手工录入时习惯加称谓。crossSheetQuery()函数未做姓名标准化如移除“老师”、“教授”等后缀。解决在lib/utils.php中新增函数function normalizeTeacherName($name) { return trim(str_replace([老师, 教授, 讲师, 助教], , $name)); }并在crossSheetQuery()中对所有教师姓名字段调用此函数后再匹配。5. 性能压测与边界突破当课表行数突破 10000 行时怎么办v3.8 的设计哲学是“够用就好”但某职业院校曾提交一份含 12 张 Sheet、总计 28641 行的课表 Excel直接导致查询响应超 15 秒。我们做了三轮压测环境PHP 8.1 Apache 2.4 4GB 内存结论很明确原生 PHP 全内存解析的模式在单文件 8000 行时必然成为瓶颈。但 v3.8 并未放弃而是提供了三条可落地的升级路径无需重写架构。5.1 路径一启用流式读取Stream Reader内存占用直降 70%PhpSpreadsheet原生支持流式读取ChunkReadFilter它不把整个 Excel 加载进内存而是按行逐块解析。v3.8 默认未启用因其会牺牲部分功能如无法跨 Sheet 关联。但如果你的场景只需单表查询如仅查“班级课表”这是最快见效的优化。启用步骤修改query.php中 Excel 加载部分第 65 行起// 原代码 // $reader new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); // $spreadsheet $reader-load($file_path); // 替换为流式读取 $reader new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); $reader-setReadDataOnly(true); // 只读数值不读样式 $chunkFilter new class implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter { private $startRow 1; private $endRow 10000; public function __construct($start, $end) { $this-startRow $start; $this-endRow $end; } public function readCell($column, $row, $worksheetName ) { return ($row $this-startRow $row $this-endRow); } }; $reader-setReadFilter(new $chunkFilter(1, 10000)); $spreadsheet $reader-load($file_path);在config.php中添加开关$enable_stream_read true; // 设为 false 则回退到全量读取压测结果10000 行课表内存峰值从 328MB 降至 96MB查询耗时从 8.2s 降至 1.9s。代价是跨表关联失效且无法读取 Excel 公式结果只读单元格最终值。5.2 路径二引入 SQLite 作为缓存层查询速度提升 20 倍当课表文件稳定每周只更新一次可将 Excel 解析结果持久化到 SQLite。v3.8 内置了cache/目录和build_cache.php脚本但默认不启用。这是最平衡的方案——既保留 Excel 作为唯一信源又获得数据库查询性能。操作流程创建缓存库访问http://localhost/build_cache.php?fileyour_file.xlsx需管理员密码脚本会读取your_file.xlsx所有 Sheet按CREATE TABLE IF NOT EXISTS teacher_timetable (id INTEGER PRIMARY KEY, teacher TEXT, course TEXT, ...)建表用INSERT OR REPLACE INTO批量写入数据1000 行/批为常用查询字段teacher,room,day,week创建索引。修改query.php当$use_cache true时查询逻辑转向sqlite:/path/to/cache.dbSQL 如SELECT * FROM teacher_timetable WHERE teacher LIKE ? AND week BETWEEN ? AND ? AND day ?压测对比10000 行方式首次查询耗时内存占用是否支持跨表原生 PHP8.2s328MB是SQLite 缓存0.4s12MB否需额外 JOIN注意SQLite 缓存需手动触发重建。某高校将其集成到教务系统定时任务每周日凌晨 2 点自动执行php build_cache.php --filecurrent.xlsx。5.3 路径三前端分页 虚拟滚动让万行课表“秒开”即使后端优化到极致一次性渲染 10000 行 HTML 表格仍会让浏览器卡顿。v3.8 的index.php默认全量输出但js/table-render.js预留了分页接口。我们实测了一套极简虚拟滚动方案query.php增加分页参数支持$page isset($_GET[page]) ? (int)$_GET[page] : 1; $limit 50; $offset ($page - 1) * $limit; // 在循环匹配行时跳过前 $offset 行只取 $limit 行index.php中用IntersectionObserver实现可视区渲染const observer new IntersectionObserver((entries) { entries.forEach(entry { if (entry.isIntersecting) { loadPage(entry.target.dataset.page); // 懒加载对应页 } }); });效果用户滚动时浏览器只渲染当前视口 50 行10000 行课表 DOM 节点数恒为 50首屏渲染 100ms。我带过的某高校学生团队在课程设计答辩中用这套方案把 15000 行课表的查询体验从“等得想关网页”做到“滑动如丝般顺滑”。他们最后没提任何高大上的技术名词只说了一句“我们让 Excel 里的数据真的活起来了。”——这大概就是这类工具存在的全部意义。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

PHP微信支付v3实战:证书加载、验签与异步通知解密全解析

PHP微信支付v3实战:证书加载、验签与异步通知解密全解析

简介:本资源是面向PHP后端开发者与微信支付接入初学者的V3版完整实践方案,聚焦最新微信支付接口集成中的证书管理、API签名、统一下单、异步回调及沙箱测试等核心难点。压缩包共16个文件,含3个关键PHP接口文件(payapi.php、sslapi…

2026/10/9 13:39:29 阅读更多 →
动漫迷必备网站全攻略:从追番到自建信息聚合系统

动漫迷必备网站全攻略:从追番到自建信息聚合系统

1. 一个动漫迷的“信息焦虑”到底该怎么破如果你是一个追番超过三年的老二次元,大概率经历过下面这种崩溃时刻:新番开播了,你在三个不同的平台之间来回切换,只因为这部番的独家版权在A站,那部番的续作又跑到了B站&…

2026/10/9 13:38:28 阅读更多 →
网络流量异常检测系统搭建:从会话化到孤立森林

网络流量异常检测系统搭建:从会话化到孤立森林

简介:这是一份NEMEA网络测量分析系统的源码压缩包,面向网络流量分析、异常检测方向的开发与研究人员。NEMEA采用模块化架构,检测器负责识别DNS隧道、DoS、扫描等恶意流量,工具模块承担数据预处理与聚合,框架层提供统一…

2026/10/9 13:38:28 阅读更多 →

最新新闻

试题库管理系统开发实战:数据库设计、自动组卷与权限模型解析

试题库管理系统开发实战:数据库设计、自动组卷与权限模型解析

简介:本资源为基于Qt与C开发的高校试题库管理系统课程设计完整资料包,面向计算机相关专业学生及需要完成数据库课程设计、管理信息系统开发实践的学习者。资源按照软件工程流程推进,覆盖需求分析、概念与逻辑结构设计、SQL建库建表、系统界面…

2026/10/9 14:07:13 阅读更多 →
de4dot-netcore 实战:.NET Core 程序集反混淆与避坑指南

de4dot-netcore 实战:.NET Core 程序集反混淆与避坑指南

简介:de4dot-netcore 版本是面向.NET Core 环境的脱壳工具,专为安全研究人员与逆向工程师打造,用于剥离 ConfuserEx、DNEmu、Themida、.NET Reactor 等常见保护壳,还原未经混淆的原始可执行文件,便于静态或动态分析。资…

2026/10/9 14:07:12 阅读更多 →
电子报纸订购系统数据库设计:课设中的真实业务数据建模

电子报纸订购系统数据库设计:课设中的真实业务数据建模

简介:本资源是一份面向高校数据库课程设计实践的完整说明书文档,适用于计算机相关专业本科生开展电子报纸订购系统开发项目。内容覆盖需求分析、数据流图绘制、概念与逻辑结构设计、关系模式构建、子系统实现(订购/统计/管理)及系…

2026/10/9 14:07:12 阅读更多 →
数据库习题解析:从SQL错题到生产级查询能力跃迁

数据库习题解析:从SQL错题到生产级查询能力跃迁

简介:本资源是《数据库原理和应用教程(第4版)》配套的习题参考答案与解析PDF,面向高校计算机、信息管理等专业本科生及数据库初学者,旨在系统巩固数据库核心理论与解题能力。内容覆盖数据库发展三阶段、DBMS组成与功能…

2026/10/9 14:07:11 阅读更多 →
Mendeley文献管理实战:从安装配置到Word引用与避坑指南

Mendeley文献管理实战:从安装配置到Word引用与避坑指南

1. 为什么我最终把文献管理交给了这款工具写论文这件事,最折磨人的环节往往不是实验做不出来,也不是数据分析跑不通,而是参考文献。我见过太多同行的桌面:几十个PDF文件散落在不同文件夹里,命名规则五花八门&#xff0…

2026/10/9 14:07:11 阅读更多 →
工资管理系统数据库设计:从课程作业到企业级HR建模

工资管理系统数据库设计:从课程作业到企业级HR建模

简介:本资源是一份面向高校信息管理与信息系统专业本科生的数据库课程设计报告,聚焦工资管理系统的全流程数据库设计与实现,帮助学习者掌握从需求分析到运行维护的完整工程实践能力。报告严格遵循数据库设计规范,系统覆盖引言、需…

2026/10/9 14:06:10 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →