您现在需要在 PHP 应用中获取体育数据,而不是下一个冲刺。在本指南结束时,您将列出 SofaScore - 实时 API 支持的所有体育项目,搜索俱乐部和国家队等实体,并获取国家旗帜——使用您可以在本周通过 Zyla API Hub 发布的生产就绪 PHP 代码。
您可以使用 SofaScore - 实时 API 构建的内容
在 Zyla API Hub 上的 SofaScore - 实时 API 提供了您可以快速集成的体育元数据:
- 获取所有支持的体育项目(例如,足球、网球、篮球)。
- 通过查询字符串搜索 SofaScore 实体(团队、球员、比赛等)。
- 获取国家旗帜的图像字节,用于 UI 徽章和联赛国家标记。
此 API 适用于记分板、比赛中心、投注工具、侦查仪表板或任何需要干净元数据和图像的体育产品。它托管在 Zyla API Hub 后面,因此您可以在采用的所有 API 中使用一个密钥和一个订阅模型。
在 Zyla API Hub 上开始
要调用 SofaScore - 实时 API:
- 打开列表:Zyla 上的 SofaScore - 实时 API。
- 点击订阅(或在可用时开始免费试用)。Zyla 使用订阅 + 配额模型,而不是按调用付费。通常,首次使用的用户可以访问 7 天的试用或 50 次请求——请查看 API 页面以获取当前访问选项和定价。
- 从您的仪表板复制您的 API 密钥。
所有请求都需要头部 Authorization: Bearer YOUR_API_KEY。请勿传递任何来源访问密钥——仅使用 Zyla 密钥。您可以使用相同的帐户和计费在 Zyla API Hub 中稍后添加更多体育 API。
您将使用的端点
以下是 Zyla 为此 API 提供的文档化端点。仅按列出的 URL、方法和参数使用。
1) 获取所有体育项目
返回所有可用体育项目的列表。
- 方法:GET
- URL:https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- 参数:无
- 认证:Authorization: Bearer YOUR_API_KEY
cURL
curl -s -X GET "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports" \
-H "Authorization: Bearer YOUR_API_KEY"
PHP (curl_init)
<?php
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_API_KEY"
],
CURLOPT_TIMEOUT => 15
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false || $httpCode >= 400) {
throw new RuntimeException("请求失败:HTTP $httpCode - ".curl_error($ch));
}
curl_close($ch);
data = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new RuntimeException("无效的 JSON:".json_last_error_msg());
}
// 示例:构建一个体育选择菜单
foreach ($data as $sport) {
printf("<option value='%s'>%s</option>\n",
htmlspecialchars($sport["slug"], ENT_QUOTES),
htmlspecialchars($sport["name"], ENT_QUOTES)
);
}
JSON(真实示例)
[
{
"id": 1,
"name": "Football",
"slug": "football"
},
{
"id": 5,
"name": "Tennis",
"slug": "tennis"
},
{
"id": 2,
"name": "Basketball",
"slug": "basketball"
},
{
"id": 64,
"name": "Baseball",
"slug": "baseball"
},
{
"id": 23,
"name": "Volleyball",
"slug": "volleyball"
},
{
"id": 63,
"name": "American football",
"slug": "american-football"
},
{
"id": 6,
"name": "Handball",
"slug": "handball"
},
{
"id": 20,
"name": "Table tennis",
"slug": "table-tennis"
},
{
"id": 4,
"name": "Ice hockey",
"slug": "ice-hockey"
},
{
"id": 22,
"name": "Darts",
"slug": "darts"
},
{
"id": 72,
"name": "E-sports",
"slug": "esports"
},
{
"id": 11,
"name": "Motorsport",
"slug": "motorsport"
},
{
"id": 65,
"name": "Cycling",
"slug": "cycling"
},
{
"id": 62,
"name": "板球",…
您实际使用的字段说明:
- id:体育项目的整数标识符。用于映射和过滤。
- name:人性化标签(在您的 UI 中呈现此内容)。
- slug:安全的唯一键(在路由、缓存键和查找中使用)。
实施提示:
- 在服务器端缓存此响应至少几个小时。与实时比分相比,体育项目的集合变化不频繁。
- 将 slugs 视为 UI 路由的稳定标识符。向用户显示名称;在 URL 中存储 slugs。
2) 搜索所有实体
通过查询字符串搜索所有 SofaScore 实体(团队、比赛、球员等)。
- 方法:GET
- URL:https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- 参数:
- q(字符串,必需):real madrid
cURL
curl -s -X GET "https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities?q=real+madrid" \
-H "Authorization: Bearer YOUR_API_KEY"
响应详细信息未在此完全记录,但它返回与您的查询匹配的实体及其元数据,如 id、name、slug、图像和国家数据(如有)。仅解析您的 UI 需要的字段,并记录未知属性以供后续检查。
3) 获取国家旗帜
返回国家旗帜图像字节。
- 方法:GET
- URL:https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- 参数:
- country_code(字符串,必需):EN
cURL
curl -s -X GET "https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag?country_code=EN" \
-H "Authorization: Bearer YOUR_API_KEY"
JSON(真实示例)
iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAMAAAAL34HQAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAELUExURUdwTN/f37QVJd7e3t3d3d/f39/f39/f397e3t7e3t3d3d3d3d3d3d/f397e3t/f39/f39zc3N7e3rQUJN/f37MUJLUTJd/f39/f3+Hh4d3d3bMUJLUVJbQUJLUVJbUUJLcQKOHh4d3d3bQVJLQUJN/f397e3rQVJbIWI7ITI7QUJLcYKM4RJP///97e3rQUJPv7++Li4v39/ebm5uDg4Orq6vDw8OTk5Pf397sTJPn5+bsUJPPz8/Ly8u7u7rcUJMcSJOzs7PHx8cQSJO/v77gUJLgTJOjo6MoSJMETJL8TJLUUJL4TJOvr680RJMsSJMsRJMQTJL0TJO3t7cwRJLYUJM0SJLwUJL4UJDN2488AAAAsdFJOUwB/38+AMBAg79+fcJBAv3CfYKC/YICfj79vr0AwcGCvIF+Pz8+vsKBQULAgUCRTtgAABilJREFUeNrtnGdX40YUhoWrhA1uGFj6tmQ34VrFKl6vzdqYDrtJNvX//5JMkSU3YWk0kiYn3A/CB3zMc+776s54NHMlKV6cfThp756+zeVUErlcq7XbPj48kjKLYqOel9WAkLf3GsXUkcqVA7mDIwiL/FE+qKSItrWndKZBIR6vrz+TuL6excKhbG6lwyR3/ND/eZiM7r6dz8bdaHL/tzPzJmUz4ZyVKtvePzMtu2fAeUCA0bNvde/N+UaCUBteorp2H0gEYpHo210/ZeVkXL7pMxkwjeexUGgDjywBMA/KufKZwmARMj0ZME++bg/mIwwWip7lgm1wBHtFocyxBsCGhVLmgim8zF+md585r15ULB8szyVhrn6WBhAPywfb4JWqJU8xYSEwan6lzMNV5iUAHywAelfKlTg34B5NlQb8sKZKvikxC5hfkyomLJQwM46QRTJPcDTgjeU6TGEawF+TXP8OwB8L4Ip8OIPBNoiAA0gGCy5NpkpBqPQ+JIXlCrnBQqVBclgsXITKMSBJLDCciFyEqhuGKg5WVC5C9RUgaSyArxG4XhEFIQ0sIDPX16GqaGhfccCiOoaoq2Vc2/WwVHGxwNBDjUMlJWRl4IRF60R+3biN5wxmeKr4WNDH…
字段说明:
- 响应是图像字节(示例中的 base64 类内容)。以 PNG 字节的形式存储和提供服务,或缓存为文件。如果您的运行时期望二进制,请确保您不会意外地进行双重编码。
- 在边缘使用 CDN 或 HTTP 缓存头以避免重新获取相同的旗帜。
JavaScript 示例(获取体育项目)
当您需要填充客户端设置页面或在 Node.js 中预渲染体育列表时使用此方法。对于生产环境,请从您的服务器调用以避免将您的密钥暴露给浏览器。
async function getAllSports() {
const res = await fetch("https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports", {
method: "GET",
headers: { "Authorization": "Bearer YOUR_API_KEY" }
});
if (!res.ok) {
throw new Error(`HTTP ${res.status}`);
}
const data = await res.json();
// 示例:查找足球
const football = data.find(s => s.slug === "football");
console.log(football);
return data;
}
getAllSports().catch(console.error);
PHP 中的实际集成模式
缓存不可变元数据
体育枚举和旗帜不经常更改。将“获取所有体育项目”缓存 6-24 小时,并将国家旗帜无限期缓存,使用版本化文件名(例如,flags/EN.png)。这可以减少延迟和配额使用。
安全处理图像字节
对于国家旗帜端点,将原始响应作为二进制写入存储。在 PHP 中:
<?php
$ch = curl_init("https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag?country_code=EN");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
CURLOPT_TIMEOUT => 15
]);
$bytes = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http >= 400 || $bytes === false) {
throw new RuntimeException("获取旗帜失败:HTTP $http");
}
file_put_contents(__DIR__ . "/flags/EN.png", $bytes);
通过您的 CDN 或公共资产路径提供该文件。如果您需要动态调整大小,请在第一次请求时处理成多个大小并缓存。
搜索人机工程学
对于“搜索所有实体”,去抖动用户输入(例如,250-400 毫秒),将查询转换为小写,并缓存热门团队的结果。由于端点仅接受 q,因此请将您的 UI 过滤器保留在客户端,并在需要时重新查询。始终清理输出,因为名称可能包含特殊字符。
MCP:从 AI 代理调用此 API
每个 Zyla API 也可以从支持模型上下文协议(MCP)的 AI 代理调用,包括 Claude Code、Cursor、Windsurf 和其他兼容 MCP 的客户端。将您的工具指向:
将您的密钥作为 apikey 传递到 MCP URL(例如,https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY)。从那里,您的代理可以通过 MCP 接口按名称调用相同的 SofaScore - 实时 API 端点。这对于内部聊天操作、管理控制台或快速原型制作体育查询非常有用。
您可以在本周发布的用例
- 体育选择小部件:使用获取所有体育项目填充体育下拉菜单,并通过 slug 将用户路由到特定体育页面。
- 团队搜索栏:使用搜索所有实体自动完成俱乐部名称,如“皇家马德里”,并直接跳转到您的内部团队仪表板,使用返回的 ids/slugs。
- 带有国家徽章的表格:通过获取和缓存每个国家代码的旗帜图像字节,将国家旗帜附加到排名、球员列表和比赛卡片。
操作考虑事项
- 身份验证:始终包括 Authorization: Bearer YOUR_API_KEY。
- 超时:设置客户端超时(10-20 秒),并在瞬时故障时重试幂等的 GET 请求。
- 缓存策略:
- 获取所有体育项目:缓存数小时;在部署或计划作业时使其失效。
- 国家旗帜:无限期缓存;将文件存储在磁盘或对象存储中。
- 搜索结果:按规范化的 q 缓存,TTL 较短(例如,几分钟)。
- 配额和计费:Zyla 使用订阅 + 配额。通常,首次使用的用户可以获得 7 天的试用或 50 次请求——请确认 API 页面上的当前条款。
- 错误处理:检查 HTTP 状态代码。对于 4xx,检查参数;对于 5xx,实施退避并将诊断信息记录到日志中。
链接参考
- API 页面:Zyla 上的 SofaScore - 实时 API
- Zyla hub:Zyla API Hub
常见问题
SofaScore - 实时 API 是否需要“获取所有体育项目”的任何参数?
不需要。该端点不接受任何参数,仅需要 Authorization 头。
正确的身份验证方式是什么?
在每个请求中使用头部 Authorization: Bearer YOUR_API_KEY 来访问 https://zylalabs.com/api/… 端点。
我可以直接在浏览器中显示国家旗帜吗?
可以。使用获取国家旗帜在您的服务器上获取一次,将字节写入 PNG 文件,并将其作为静态资产或通过 CDN 提供服务。避免从浏览器获取以保持您的密钥私密。
我如何搜索特定的团队或比赛?
使用 q 参数调用搜索所有实体。例如,q=real madrid。解析响应以提取 id、name、slug 以及您需要的任何图像或国家属性。
是否有免费计划?
没有免费计划。Zyla 使用订阅 + 配额模型。对于首次使用的用户,通常可以获得 7 天的试用或 50 次请求;请查看 API 页面以获取当前访问选项和定价。
获取您的密钥并发布
创建您的 Zyla 帐户,订阅 SofaScore - 实时 API,并将 Authorization 头插入上面的 PHP 代码。您今天就可以渲染体育和国家旗帜。注册 以获取您的 API 密钥并开始集成。