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

在HTML中通过PHP提取API JSON数据失败求助

问题排查与解决

核心问题

  1. 文件扩展名错误:你用的是.html后缀,服务器默认不会解析HTML文件中的PHP代码,只会把PHP代码当作普通文本输出,这就是你看到奇怪内容的原因。
  2. HTML结构错误:代码里<head>标签没有闭合,而且把PHP输出逻辑放在<head>里不符合页面结构规范,应该放到<body>区域。
  3. 缺少错误处理:API请求可能失败、JSON解析可能出错,或者返回的数据里没有players->list,直接访问会导致报错。

修正后的代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>MC服务器状态</title>
</head>
<body>
<?php
// 初始化变量避免报错
$status = null;
$version = '获取失败';
$playerList = [];

// 尝试请求API并解析JSON
$apiResponse = file_get_contents('https://api.mcsrvstat.us/2/labrofamily.aternos.me');
if ($apiResponse !== false) {
    $status = json_decode($apiResponse);
    // 检查解析是否成功,且存在version字段
    if ($status && isset($status->version)) {
        $version = $status->version;
    }
    // 检查是否存在玩家列表
    if ($status && isset($status->players->list) && is_array($status->players->list)) {
        $playerList = $status->players->list;
    }
}
?>

<h3>服务器版本:<?php echo $version; ?></h3>

<h3>在线玩家:</h3>
<?php if (!empty($playerList)): ?>
    <ul>
        <?php foreach ($playerList as $player): ?>
            <li><?php echo $player; ?></li>
        <?php endforeach; ?>
    </ul>
<?php else: ?>
    <p>当前无在线玩家</p>
<?php endif; ?>
</body>
</html>

关键改动说明

  • 将文件扩展名改为.php(比如命名为server-status.php),确保服务器会执行其中的PHP代码。
  • 修复了HTML结构,闭合了<head>标签,并把PHP逻辑和输出放到<body>里。
  • 添加了错误处理:检查API请求是否成功、JSON解析是否正常,避免因数据异常导致页面崩溃。
  • 用更友好的HTML结构展示内容,比如用标题和列表,比直接echo更美观。

内容的提问来源于stack exchange,提问作者Blédinde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:31:02