首页 > 解决方案 > PHP 用查询分解 URL

问题描述

我是 PHP 的菜鸟,并试图采用这样的 URL:

http://www.website.com/presale-event?eventId=386158&presaleId=5dbb0ec3f6f96355f00c2173

...最终设置$eventId = 386158$presaleId = 5dbb0ec3f6f96355f00c2173

这是我尝试过的,但我知道“预售活动”不是完整的 $uri_segments[1]。只是不确定解析这个的正确语法。请注意,我只希望在 $uri_segements[1] “包含”预售事件时触发它。

if (isset($_SERVER['REQUEST_URI'])) {
    $uri_segments = explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
    if ($uri_segments[1] === 'presale-event') {
        list($eventId, $presaleId) = explode('=', $uri_segments[1], 2);
    }
}

标签: phpexplode

解决方案


从 URL 获取查询参数及其值:

$url = "http://www.website.com/presale-event?eventId=386158&presaleId=5dbb0ec3f6f96355f00c2173";
$parsedUrl = parse_url($url);
if ($parsedUrl['path'] == '/presale-event') {
    $queryString = $parsedUrl['query'] ?? '';
    parse_str($queryString, $queryParams);
    var_dump($queryParams);
}

输出将是:

array(2) {
  ["eventId"]=>
  string(6) "386158"
  ["presaleId"]=>
  string(24) "5dbb0ec3f6f96355f00c2173"
}

如果查询字符串与您当前的传入请求相关,而不是解析 URL,您也可以使用 $_GET 数组。


推荐阅读