In der PHP -Entwicklung müssen wir häufig URLs verarbeiten, z. B. Domänennamen, Pfade, Abfrageparameter und andere Informationen aus einer vollständigen Adresse. Parse_url () ist eine sehr praktische Funktion, die von PHP bereitgestellt wird, die uns helfen kann, diese Vorgänge schnell und genau zu erledigen. Viele Entwickler verstehen jedoch nicht die Bedeutung jedes von der Funktion zurückgegebenen Feldes, was zu Missverständnissen oder Fehlern in der tatsächlichen Verwendung führt. In diesem Artikel wird das Rückgabeergebnis von Parse_url () systematisch analysiert, um Ihnen zu helfen, seine Verwendung wirklich zu beherrschen.
Die Funktionsdefinition von Parse_url () lautet wie folgt:
mixed parse_url(string $url, int $component = -1)
Es empfängt eine URL -Zeichenfolge als Eingabe und gibt ein assoziatives Array zurück, das die verschiedenen Komponenten der URL enthält. Der zweite Parameter $ -Komponente ist optional. Wenn dieser Parameter angegeben ist, gibt die Funktion nur den Wert des entsprechenden Teils der URL zurück.
Schauen wir uns zunächst das einfachste Beispiel an:
$url = 'https://user:[email protected]:8080/path/to/page.php?query=123#section';
$parsed = parse_url($url);
print_r($parsed);
Das Ausgabeergebnis ist wie folgt:
Array
(
[scheme] => https
[host] => gitbox.net
[port] => 8080
[user] => user
[pass] => pass
[path] => /path/to/page.php
[query] => query=123
[fragment] => section
)
Lassen Sie uns die Bedeutung jedes Feldes in diesem Array eins nacheinander analysieren:
Dies ist der Protokollteil der URL, wie HTTP , HTTPS , FTP usw. In den Beispielen sind:
[scheme] => https
Zeigt an, dass die URL das HTTPS -Protokoll verwendet.
Das heißt, der Hostname, normalerweise der Domain -Name oder die IP -Adresse. In unserem Beispiel:
[host] => gitbox.net
Dies ist genau die Serveradresse, auf die wir zugreifen möchten.
Dies ist die Portnummer für die Verbindung. Wenn der Port in der URL nicht explizit angegeben ist, erscheint das Feld nicht im Ergebnis. Beispielsweise beträgt der Standard -HTTP -Port 80 und HTTPS 443; Es wird analysiert, es sei denn, Sie verwenden einen Nicht-Default-Port.
[port] => 8080
Dies zeigt, dass wir über Port 8080 zugegriffen haben.
Diese beiden Felder repräsentieren den Benutzernamen und das Kennwort, das für die grundlegende Authentifizierung verwendet wird. Sie erscheinen normalerweise in URLs wie https: // user: Pass@host . Im Beispiel:
[user] => user
[pass] => pass
Bitte beachten Sie: Es wird nicht empfohlen, den Benutzernamen und das Passwort in den URL -Klartext in realen Produktionsumgebungen zu übertragen.
Dies ist der Pfadteil der Ressource in der URL, z. B. der Pfad zu einer Seite oder Schnittstelle in der Website:
[path] => /path/to/page.php
Dieses Feld wird häufig für Routing, Berechtigungssteuerung oder statische Ressourcenzugriff verwendet.
Das heißt, der Teil der Abfrage -Zeichenfolge nach dem Fragezeichen, mit dem normalerweise Parameter bestanden werden:
[query] => query=123
Beachten Sie, dass die hier nicht analysierte Zeichenfolge zurückgegeben wird. Wenn eine weitere Verarbeitung erforderlich ist, können Sie die Funktion parse_str () verwenden, um sie in ein Array umzuwandeln:
parse_str($parsed['query'], $queryParams);
print_r($queryParams);
Ausgabe:
Array
(
[query] => 123
)
Dies ist der Ankerteil in der URL, dh der Inhalt nach # , der normalerweise zum Springen auf der Seite verwendet wird:
[fragment] => section
Es wird nicht vom Browser an den Server gesendet und wird hauptsächlich für die Client -Seitensteuerung verwendet.
Wenn Sie nur an einem bestimmten Feld in der URL interessiert sind, können Sie den zweiten Parameter verwenden, um die Feldkonstante anzugeben, z. B.:
$host = parse_url($url, PHP_URL_HOST);
echo $host; // Ausgabe:gitbox.net
Zu den verfügbaren Konstanten gehören:
Php_url_scheme
Php_url_host
Php_url_port
PHP_URL_USER
Php_url_pass
Php_url_path
Php_url_query
Php_url_fragment
Unvollständige URL : Parse_url () erfordert nicht, dass die eingehende URL vollständig sein muss. Es kann auch relative Adressen wie /path/to/page.php?query=123 verarbeiten, aber die entsprechenden Felder fehlen möglicherweise.
Der Rückgabewert ist falsch : Wenn die übergebene Zeichenfolge nicht in eine gültige URL analysiert werden kann, gibt die Funktion falsch zurück, und die Aufmerksamkeit sollte der Fehlertoleranz geschenkt werden.
Unicode -Domänenname : Für URLs, die chinesische oder andere Unicode -Zeichen enthalten, wird empfohlen, zuerst idn_to_ascii () für die Codierung der Conversion zu verwenden.
Parse_url () ist ein unverzichtbares Werkzeug in PHP für die Verarbeitung von URLs. Das Verständnis der Bedeutung jedes von ihm zurückgegebenen Feldes kann Ihnen helfen, URL-bezogene Entwicklungsaufgaben effizienter zu erledigen. Es kann eine wichtige Rolle spielen, ob es darum geht, ein Routing -System zu schreiben, Sprungverbindungen zu verarbeiten oder eine API -Anforderunganalyse durchzuführen. Denken Sie daran: Indem Sie angemessen Parse_url () und Parse_str () übereinstimmen, können Sie jede URL leicht "zerlegen".