Szukaj…


Analiza adresu URL

Aby oddzielić adres URL na poszczególne składniki, użyj parse_url() :

$url = 'http://www.example.com/page?foo=1&bar=baz#anchor';
$parts = parse_url($url);

Po wykonaniu powyższego zawartość części $parts będzie wyglądać następująco:

Array
(
    [scheme] => http
    [host] => www.example.com
    [path] => /page
    [query] => foo=1&bar=baz
    [fragment] => anchor
)

Możesz także selektywnie zwrócić tylko jeden element adresu URL. Aby zwrócić tylko kwerendę:

$url = 'http://www.example.com/page?foo=1&bar=baz#anchor';
$queryString = parse_url($url, PHP_URL_QUERY);

Akceptowane są dowolne z następujących stałych: PHP_URL_SCHEME , PHP_URL_HOST , PHP_URL_PORT , PHP_URL_USER , PHP_URL_PASS , PHP_URL_PATH , PHP_URL_QUERY i PHP_URL_FRAGMENT .

Aby dalej przeanalizować ciąg zapytania w pary klucz-wartość, użyj parse_str() :

$params = [];
parse_str($queryString, $params);

Po wykonaniu powyższego tablica $params zostanie wypełniona następującymi elementami:

Array
(
    [foo] => 1
    [bar] => baz
)

Przekierowanie do innego adresu URL

Możesz użyć funkcji header() aby poinstruować przeglądarkę o przekierowaniu na inny adres URL:

$url = 'https://example.org/foo/bar';
if (!headers_sent()) { // check headers - you can not send headers if they already sent
  header('Location: ' . $url);
  exit; // protects from code being executed after redirect request
} else {
  throw new Exception('Cannot redirect, headers already sent');
}

Możesz również przekierować na względny adres URL (nie jest to część oficjalnej specyfikacji HTTP, ale działa we wszystkich przeglądarkach):

$url = 'foo/bar';
if (!headers_sent()) {
  header('Location: ' . $url);
  exit;
} else {
  throw new Exception('Cannot redirect, headers already sent');
}

Jeśli nagłówki zostały wysłane, możesz alternatywnie wysłać meta refresh tag HTML.

OSTRZEŻENIE: Metatag odświeżania zależy od poprawnego przetworzenia HTML przez klienta, a niektóre tego nie zrobią. Ogólnie rzecz biorąc, działa tylko w przeglądarkach internetowych. Weź również pod uwagę, że jeśli nagłówki zostały wysłane, możesz mieć błąd, który powinien wywołać wyjątek.

Możesz również wydrukować link do kliknięcia przez użytkowników, w przypadku klientów, którzy ignorują meta tag odświeżania:

$url = 'https://example.org/foo/bar';
if (!headers_sent()) {
  header('Location: ' . $url);
} else {
  $saveUrl = htmlspecialchars($url); // protects from browser seeing url as HTML
  // tells browser to redirect page to $saveUrl after 0 seconds
  print '<meta http-equiv="refresh" content="0; url=' . $saveUrl . '">';
  // shows link for user
  print '<p>Please continue to <a href="' . $saveUrl . '">' . $saveUrl . '</a></p>';
}
exit;

Zbuduj ciąg zapytania zakodowany w adresie URL z tablicy

Funkcja http_build_query() utworzy ciąg zapytania z tablicy lub obiektu. Te ciągi mogą być dołączane do adresu URL w celu utworzenia żądania GET lub używane w żądaniu POST z, na przykład, cURL.

$parameters = array(
    'parameter1' => 'foo',
    'parameter2' => 'bar',
);
$queryString = http_build_query($parameters);

$queryString będzie mieć następującą wartość:

parameter1=foo&parameter2=bar

http_build_query() będzie również działać z tablicami wielowymiarowymi:

$parameters = array(
    "parameter3" => array(
        "sub1" => "foo",
        "sub2" => "bar",
    ),
    "parameter4" => "baz",
);
$queryString = http_build_query($parameters);

$queryString będzie mieć tę wartość:

parameter3%5Bsub1%5D=foo&parameter3%5Bsub2%5D=bar&parameter4=baz

która jest wersją zakodowaną w adresie URL

parameter3[sub1]=foo&parameter3[sub2]=bar&parameter4=baz


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow