Suche…


URL analysieren

Um eine URL in ihre einzelnen Komponenten zu trennen, verwenden Sie parse_url() :

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

Nach der Ausführung des obigen Befehls würde der Inhalt von $parts lauten:

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

Sie können auch nur eine Komponente der URL zurückgeben. Um nur die Querzeichenfolge zurückzugeben:

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

Folgende Konstanten sind PHP_URL_SCHEME : PHP_URL_SCHEME , PHP_URL_HOST , PHP_URL_PORT , PHP_URL_USER , PHP_URL_PASS , PHP_URL_PATH , PHP_URL_QUERY und PHP_URL_FRAGMENT .

Verwenden Sie parse_str() um eine parse_str() weiter in Schlüsselwertpaare zu parsen:

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

Nach der Ausführung des obigen $params würde das $params Array mit folgendem $params :

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

Umleitung auf eine andere URL

Mit der header() Funktion können Sie den Browser anweisen, zu einer anderen URL umzuleiten:

$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');
}

Sie können auch zu einer relativen URL umleiten (dies ist nicht Teil der offiziellen HTTP-Spezifikation, funktioniert aber in allen Browsern):

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

Wenn Header gesendet wurden, können Sie alternativ ein meta refresh HTML-Tag senden.

WARNUNG: Das Meta-Refresh-Tag setzt voraus, dass HTML ordnungsgemäß vom Client verarbeitet wird. Einige werden dies nicht tun. Im Allgemeinen funktioniert es nur in Webbrowsern. Beachten Sie außerdem, dass nach dem Senden von Kopfzeilen ein Fehler aufgetreten ist, der eine Ausnahme auslösen sollte.

Sie können auch einen Link zum Klicken für Benutzer ausdrucken, für Clients, die das Meta-Refresh-Tag ignorieren:

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

Erstellen Sie eine URL-kodierte Abfragezeichenfolge aus einem Array

Das http_build_query() erstellt eine http_build_query() aus einem Array oder Objekt. Diese Zeichenfolgen können an eine URL angehängt werden, um eine GET-Anforderung zu erstellen, oder in einer POST-Anforderung mit beispielsweise cURL verwendet werden.

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

$queryString hat den folgenden Wert:

parameter1=foo&parameter2=bar

http_build_query() funktioniert auch mit mehrdimensionalen Arrays:

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

$queryString hat folgenden Wert:

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

Dies ist die URL-kodierte Version von

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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow