parse_url

(PHP 4, PHP 5, PHP 7)

parse_urlAnalysiert eine URL und gibt ihre Bestandteile zurück

Beschreibung

parse_url ( string $url [, int $component = -1 ] ) : mixed

Diese Funktion parst einen URL und gibt ein assoziatives Array zurück, das die im URL vorhandenen Komponenten enthält. Die Werte der Array-Elemente sind nicht URL dekodiert.

Diese Funktion ist nicht dazu gedacht, einen gegebenen URL zu validieren, sondern es gliedert einen URL in die unten aufgeführten Bestandteile. Unvollständige URLs werden als Parameter akzeptiert, parse_url() versucht, sie bestmöglich zu analysieren.

Parameter-Liste

url

Der zu parsende URL. Ungültige Zeichen werden durch _ ersetzt.

component

Geben Sie einen der folgenden Parameter an, um nur einen spezifischen Teil des URL als String (außer wenn PHP_URL_PORT angegeben wird, in welchem Fall der Rückgabewert ein Integer ist) zu erhalten: Geben Sie entweder PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY oder PHP_URL_FRAGMENT an.

Rückgabewerte

Bei sehr fehlerhaften URLs kann parse_url() FALSE zurückgeben.

Wird der component Parameter ausgelassen, wird ein assoziatives Array zurückgegeben. Mindestens ein Bestandteil liegt im Array vor. Mögliche Schlüssel in diesem Array sind:

  • scheme - z.B. http
  • host
  • port
  • user
  • pass
  • path
  • query - alles nach dem Fragezeichen ?
  • fragment - alles nach dem Textanker #

Ist der Parameter component angegeben, gibt parse_url() ein String (oder ein Integer, im Fall von PHP_URL_PORT) anstelle des normalen Array zurück.

Changelog

Version Beschreibung
5.4.7 Host-Erkennung bei fehlendem Schema und führendem Komponententrenner korrigiert.
5.3.3 E_WARNING für fehlerhafte URLs entfernt.
5.1.2 component-Parameter hinzugefügt

Beispiele

Beispiel #1 Ein parse_url()-Beispiel

<?php
$url 
'http://benutzername:passwort@hostname:9090/pfad?argument=wert#textanker';

var_dump(parse_url($url));
var_dump(parse_url($urlPHP_URL_SCHEME));
var_dump(parse_url($urlPHP_URL_USER));
var_dump(parse_url($urlPHP_URL_PASS));
var_dump(parse_url($urlPHP_URL_HOST));
var_dump(parse_url($urlPHP_URL_PORT));
var_dump(parse_url($urlPHP_URL_PATH));
var_dump(parse_url($urlPHP_URL_QUERY));
var_dump(parse_url($urlPHP_URL_FRAGMENT));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

array(8) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(8) "hostname"
  ["port"]=>
  int(9090)
  ["user"]=>
  string(12) "benutzername"
  ["pass"]=>
  string(8) "passwort"
  ["path"]=>
  string(5) "/pfad"
  ["query"]=>
  string(13) "argument=wert"
  ["fragment"]=>
  string(9) "textanker"
}
string(4) "http"
string(12) "benutzername"
string(8) "passwort"
string(8) "hostname"
int(9090)
string(5) "/pfad"
string(13) "argument=wert"
string(9) "textanker"

Beispiel #2 Ein parse_url()-Beispiel mit fehlendem Schema

<?php
$url 
'//www.example.com/path?googleguy=googley';

// Vor 5.4.7 wurde der Pfad als "//www.example.com/path" angezeigt
var_dump(parse_url($url));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

array(3) {
  ["host"]=>
  string(15) "www.example.com"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(17) "googleguy=googley"
}

Anmerkungen

Hinweis:

Diese Funktion gibt für relative URLs möglicherweise inkorrekte Ergebnisse.

Hinweis:

Die Funktion ist primär dazu gedacht, URLs zu parsen, nicht jedoch URIs. Um jedoch die Abwärtskompatibilität von PHP zu gewährleisten, wird für das Schema file:// die Ausnahme dreier Slashes (file:///) zugelassen. Bei allen anderen Schemata ist diese Notierung ungültig.

Siehe auch