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¶meter2=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¶meter3%5Bsub2%5D=bar¶meter4=baz
Dies ist die URL-kodierte Version von
parameter3[sub1]=foo¶meter3[sub2]=bar¶meter4=baz