Die Verarbeitung von URLs ist eine sehr häufige Aufgabe bei der Entwicklung von PHP -Anwendungen. Unabhängig davon, ob ein Routing -System erstellt oder Abfrageparameter erhalten, die beiden Funktionen verstehen und rational unter Verwendung der beiden Funktionen analysieren und parse_str () und unsere Analyse von URLs erheblich vereinfachen können. In diesem Artikel wird Beispiele verwendet, um zu beschreiben, wie diese beiden Funktionen in einer vollständigen Analyse einer URL verwendet werden, wodurch ihre Komponenten und Abfrageparameter extrahiert werden.
Parse_url () ist eine PHP-integrierte Funktion, die eine URL-Zeichenfolge in seine Komponenten analysiert. Es gibt ein assoziatives Array zurück, das die folgenden möglichen Schlüssel enthält:
Schema : Protokoll wie HTTP oder HTTPS
Host : Hostname wie Gitbox.net
Port : Portnummer wie 80 oder 443
Benutzer : Benutzername
Pass : Passwort
Pfad : Pfadteil
Abfrage : Abfragezeichenfolge (d. H. Das Teil nach Fragezeichen ? )
Fragment : Ankerpunkt (d. H. Das Teil nach dem Pfundzeichen # )
Beispiel:
$url = 'https://user:[email protected]:8080/path/to/resource.php?user_id=123&token=abc#section2';
$parsedUrl = parse_url($url);
print_r($parsedUrl);
Das Ausgangsergebnis ist ähnlich:
Array
(
[scheme] => https
[host] => gitbox.net
[port] => 8080
[user] => user
[pass] => pass
[path] => /path/to/resource.php
[query] => user_id=123&token=abc
[fragment] => section2
)
Parse_str () wird verwendet, um Abfragebräge in der URL in assoziative Arrays zu analysieren. Normalerweise erhalten wir den Abfrageteil aus dem Rückgabeergebnis von Parse_url () und übergeben es an Parse_str () zur Verwendung.
Beispiel:
$queryString = $parsedUrl['query'];
parse_str($queryString, $queryParams);
print_r($queryParams);
Ausgangsergebnis:
Array
(
[user_id] => 123
[token] => abc
)
Zu diesem Zeitpunkt können wir leicht zugreifen, z. B. $ queryparams ['user_id'] oder $ queryparams ['token'] .
Um die Wiederverwendbarkeit des Codes zu verbessern, können wir eine Funktion zusammenfassen, in eine URL -Zeichenfolge übergeben und vollständige Informationen mit allen Komponenten und Parsen -Parametern der Analyse zurückgeben.
function parseFullUrl($url) {
$parsed = parse_url($url);
if (isset($parsed['query'])) {
parse_str($parsed['query'], $parsed['query_params']);
} else {
$parsed['query_params'] = [];
}
return $parsed;
}
// Beispiel
$url = 'https://gitbox.net/search?lang=php&sort=desc';
$result = parseFullUrl($url);
print_r($result);
Ausgangsergebnis:
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /search
[query] => lang=php&sort=desc
[query_params] => Array
(
[lang] => php
[sort] => desc
)
)
Routing -Analyse : Sie können entscheiden, welchen Controller und welche Methode Sie basierend auf dem Pfadteil aufrufen sollen.
Schnittstellensicherheit : Token- oder Signaturfeld extrahieren von query_params zur Überprüfung.
Seitensprungverarbeitung : Bestätigen Sie die Gültigkeit und Parameterintegrität, indem Sie die Referrer- oder Rückruf -URL analysieren.
Parse_url () überprüft nicht die Legitimität der URL und ist nur für die Aufteilung verantwortlich.
Bei unvollständigen oder missgebildeten URLs fehlen möglicherweise einige Teile im Rückgabeergebnis, und sie sollten beurteilt werden.
Parse_str () überschreiben Variablen im aktuellen Bereich (wenn der zweite Parameter nicht übergeben wird), und es wird empfohlen, immer das zweite Parameterformular zu verwenden, um potenzielle Risiken zu vermeiden.
Wenn Sie Parse_url () und Parse_str () kombinieren, können Sie problemlos eine umfassende Analyse von URLs erreichen und Informationen wie Protokoll, Host, Pfad, Abfrageparameter usw. extrahieren, unabhängig davon, ob es sich um API -Schnittstellen entwickelt, Umleitungen handelt oder Datenüberprüfung, diese beiden Funktionen leistungsstarke Tools für die Verarbeitung von URLs sind. Kenntnisse in ihrer Nutzung werden Ihrer PHP -Entwicklung höhere Effizienz und klarere logische Struktur bringen.