You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:24:41