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

如何从JSON数据生成动态URL?PHP自定义URL实现求助

没问题,我来帮你一步步搞定这个需求!

一、配置自定义URL(伪静态)

要实现http://localhost/test/quote/{symbol}这样的URL,需要通过服务器的URL重写规则,把这个友好的URL转发到实际的equity.php文件并传递参数。下面分两种主流服务器来介绍:

针对Apache服务器

  1. 先确认mod_rewrite模块已启用(大部分环境默认开启,若未开需在httpd.conf中启用)
  2. 在你的test目录下创建.htaccess文件,写入以下规则:
RewriteEngine On
# 将 /quote/{symbol} 转发到 equity.php,同时传递symbol参数
RewriteRule ^quote/([a-zA-Z0-9]+)$ equity.php?symbol=$1 [L,QSA]
  • 规则解释:^quote/([a-zA-Z0-9]+)$匹配/quote/后跟随字母/数字的路径,把捕获到的股票代码作为symbol参数传给equity.php;[L]表示这是最后一条规则,[QSA]表示保留原有的查询参数(如果有)。

针对Nginx服务器

在你的站点server配置块中添加以下重写规则:

location /test/quote/ {
    rewrite ^/test/quote/([a-zA-Z0-9]+)$ /test/equity.php?symbol=$1 last;
}

保存配置后重启Nginx即可生效。

二、在equity.php中处理请求并展示数据

现在用户访问http://localhost/test/quote/AAPL时,服务器会自动转发到equity.php?symbol=AAPL,你可以在PHP中这样获取参数并处理业务逻辑:

<?php
// 安全获取symbol参数,做基础校验
$symbol = isset($_GET['symbol']) ? trim(strtoupper($_GET['symbol'])) : '';

if (empty($symbol)) {
    echo "请提供有效的股票代码";
    exit;
}

// 这里替换成你的实际数据获取逻辑(比如从数据库/API拉取)
function getStockData($symbol) {
    // 模拟数据,实际场景请替换为真实数据源
    $mockDatabase = [
        'AAPL' => ['name' => '苹果公司', 'price' => 192.35, 'change' => '+0.8%'],
        'MSFT' => ['name' => '微软公司', 'price' => 345.10, 'change' => '-0.2%']
    ];
    return $mockDatabase[$symbol] ?? null;
}

$stockData = getStockData($symbol);

if (!$stockData) {
    echo "未找到股票代码 {$symbol} 的相关数据";
} else {
    echo "<h1>{$stockData['name']} ({$symbol})</h1>";
    echo "<p>当前价格: $" . number_format($stockData['price'], 2) . "</p>";
    echo "<p>涨跌幅: <span style='color:" . ($stockData['change'][0] == '+' ? 'green' : 'red') . "'>{$stockData['change']}</span></p>";
}
?>

三、从JSON数据生成动态URL

假设你有一个存储股票列表的JSON文件(比如stocks.json),内容如下:

{
    "stock_list": [
        {"symbol": "AAPL", "name": "苹果公司"},
        {"symbol": "MSFT", "name": "微软公司"},
        {"symbol": "GOOGL", "name": "谷歌母公司"}
    ]
}

你可以在PHP中读取这个JSON,循环生成对应的动态链接:

<?php
// 读取JSON文件并解析
$jsonContent = file_get_contents('stocks.json');
$stockList = json_decode($jsonContent, true);

if (empty($stockList['stock_list'])) {
    echo "暂无可用股票数据";
    exit;
}

echo "<h2>热门股票</h2>";
echo "<ul>";
foreach ($stockList['stock_list'] as $item) {
    $dynamicUrl = "/test/quote/{$item['symbol']}";
    echo "<li><a href='{$dynamicUrl}'>{$item['name']} ({$item['symbol']})</a></li>";
}
echo "</ul>";
?>

这样生成的链接点击后,就会跳转到对应股票的详情页面。

内容的提问来源于stack exchange,提问作者Alex Jean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:28:28