PHP从HTML游戏分数文件提取高分并入库、高亮显示的问题
嘿,咱们来看看为啥你会得到“未找到匹配项”,把这个分数处理的功能搞定!
问题排查与分步解决方案
1. 先搞定“匹配不到”的核心问题
你现在提取不到分数,90%是正则表达式没匹配上你的文本格式。首先得明确你的纯文本每行是什么样的——比如是 姓名 分数、姓名:分数 还是其他格式?举个例子,如果你的文件内容是:
爱丽丝 68
鲍勃 63
查理 72
戴安娜 59
那你需要用能精准捕获姓名和分数的正则。比如针对空格分隔的情况,用这个正则:
/^(.+?)\s+(\d+)$/gm
^(.+?):捕获开头的姓名(非贪婪匹配,避免把空格也包含进去)\s+:匹配姓名和分数之间的一个或多个空格(\d+)$:捕获结尾的数字分数
如果你的分隔符是冒号或者其他,就把\s+换成对应的字符(比如:)。
2. 完整实现:提取高分+页面高亮+存数据库
假设你用前端JavaScript处理(因为要在页面上显示),这里给你一个可直接用的示例:
<script> // 先读取你的纯文本分数文件 fetch('your-scores-file.txt') // 替换成你的文件路径 .then(response => response.text()) .then(rawText => { const scoreLines = rawText.split('\n').filter(line => line.trim() !== ''); // 过滤空行 const highScoreEntries = []; const displayContainer = document.createElement('div'); scoreLines.forEach(line => { // 用正则匹配当前行的姓名和分数 const matchResult = line.match(/^(.+?)\s+(\d+)$/); if (matchResult) { const userName = matchResult[1].trim(); const userScore = parseInt(matchResult[2], 10); // 转成数字,避免字符串比较坑 // 创建页面显示的行元素 const lineElement = document.createElement('p'); lineElement.textContent = line; // 判断是否为高分 if (userScore > 65) { lineElement.style.color = 'red'; // 高亮红色 highScoreEntries.push({ name: userName, score: userScore }); // 存入待提交数组 } displayContainer.appendChild(lineElement); } }); // 把所有内容渲染到页面 document.body.appendChild(displayContainer); // 提交高分到数据库(这里假设你有后端接口) if (highScoreEntries.length > 0) { fetch('/api/save-high-scores', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(highScoreEntries) }) .then(res => res.json()) .then(() => console.log('高分已成功存入数据库!')) .catch(err => console.error('存储失败:', err)); } else { console.log('未找到65分以上的分数'); } }) .catch(err => console.error('读取文件失败:', err)); </script>
3. 常见踩坑点要注意
- 正则匹配失败:如果还是匹配不到,先打印
scoreLines数组,看看每一行的实际内容,有没有多余的空格、制表符或者特殊字符,调整正则适配你的格式。 - 字符串转数字:一定要用
parseInt把分数转成数字,别直接用字符串和数字比较(比如'66' > 65看似没问题,但如果是'066'就会出错)。 - 本地跨域问题:如果你直接打开本地HTML文件,浏览器会限制fetch读取本地文件,建议用本地服务器运行(比如Python的
python -m http.server,或者Node.js的http-server)。
4. 后端数据库存储小提示
如果是后端处理存储(比如用Node.js/PHP/Python),记得:
- 对提交的姓名和分数做校验,防止非法数据
- 用预处理语句插入数据库,避免SQL注入风险
内容的提问来源于stack exchange,提问作者inca
相关产品推荐
相关产品推荐

