PHP взорвать URL с запросами - PullRequest
0 голосов
/ 07 ноября 2019

Я новичок в 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);
    }
}

1 Ответ

0 голосов
/ 07 ноября 2019

Чтобы получить параметры запроса и их значения из 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.

...