Zoeken…


Een URL parseren

Gebruik parse_url() om een URL in zijn afzonderlijke componenten te scheiden:

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

Na het uitvoeren van het bovenstaande zou de inhoud van $parts zijn:

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

U kunt ook selectief slechts één component van de URL retourneren. Alleen de querystring retourneren:

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

Elk van de volgende constanten wordt geaccepteerd: PHP_URL_SCHEME , PHP_URL_HOST , PHP_URL_PORT , PHP_URL_USER , PHP_URL_PASS , PHP_URL_PATH , PHP_URL_QUERY en PHP_URL_FRAGMENT .

Gebruik parse_str() om een queryreeks verder in sleutelwaardeparen te parseren:

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

Na uitvoering van het bovenstaande zou de $params array worden gevuld met het volgende:

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

Omleiden naar een andere URL

U kunt de functie header() om de browser de opdracht te geven om te verwijzen naar een andere 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');
}

U kunt ook omleiden naar een relatieve URL (dit is geen onderdeel van de officiële HTTP-specificatie, maar het werkt in alle browsers):

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

Als headers zijn verzonden, kunt u ook een HTML-tag met meta refresh verzenden.

WAARSCHUWING: de meta-vernieuwingstag vertrouwt erop dat HTML correct wordt verwerkt door de client en sommigen zullen dit niet doen. Over het algemeen werkt het alleen in webbrowsers. Houd er ook rekening mee dat als headers zijn verzonden, er mogelijk een bug is en dit een uitzondering zou moeten veroorzaken.

U kunt ook een link afdrukken waarop gebruikers kunnen klikken, voor clients die de meta refresh-tag negeren:

$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;

Bouw een URL-gecodeerde queryreeks uit een array

De http_build_query() maakt een querystring van een array of object. Deze tekenreeksen kunnen aan een URL worden toegevoegd om een GET-aanvraag te maken, of worden gebruikt in een POST-aanvraag met bijvoorbeeld cURL.

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

$queryString heeft de volgende waarde:

parameter1=foo&parameter2=bar

http_build_query() werkt ook met multidimensionale arrays:

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

$queryString heeft deze waarde:

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

dat is de URL-gecodeerde versie van

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow