In PHP ist die Parse_url -Funktion ein sehr praktisches Instrument zum Analysieren von URLs und zur Rückgabe ihrer Komponenten wie Protokolle, Hostnamen, Pfade usw. Die grundlegende Verwendung der Funktion lautet wie folgt:
$url = "https://gitbox.net/path?query=1";
$parts = parse_url($url);
print_r($parts);
Dieser Code gibt verschiedene Komponenten der URL aus, wie z. B.:
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /path
[query] => query=1
)
Manchmal können Sie jedoch auf Situationen stoßen, in denen Parse_url null oder falsch zurückgibt, und Sie werden verwirrt sein: Was ist der Unterschied zwischen ihnen? In diesem Artikel wird die Bedeutung und die anwendbaren Szenarien dieser beiden Rückgabewerte ausführlich erläutert.
In PHP 7.3 und früher wird das ankommende URL -Format extrem falsch, Parse_url zurückgeführt , was angibt, dass das Parsen fehlgeschlagen ist.
$url = "ht!tp:::/invalid-url";
$result = parse_url($url);
var_dump($result); // bool(false)
Das URL -Format ist hier offensichtlich nicht den Spezifikationen entspricht, und die Funktion kann nicht normal analysiert werden, so dass falsch zurückgegeben wird.
Zusammenfassen:
Falsch zurückgeben bedeutet normalerweise, dass die übergebene Zeichenfolge nicht als legitime URL oder URI anerkannt werden kann.
Dies kann daran liegen, dass die Zeichenfolge nicht autorisierte Zeichen enthält oder falsch formatiert ist.
Tatsächlich gibt die Parse_url -Funktion in der offiziellen Dokumentation nicht explizit an, um NULL zurückzugeben. In bestimmten Fällen, wie z. B. Parse_url aufzurufen und in einer leeren Zeichenfolge oder einem Nicht-String-Typ zu bestehen, kann NULL angezeigt werden.
$url = "";
$result = parse_url($url);
var_dump($result); // NULL oder leeres Array,je nach PHP Version
Wenn ein bestimmter Teil der URL analysiert wird und dieser Teil in der URL nicht vorhanden ist, ist der entsprechende Teil des Rückgabewerts null .
$url = "https://gitbox.net";
$host = parse_url($url, PHP_URL_HOST);
var_dump($host); // string(9) "gitbox.net"
$path = parse_url($url, PHP_URL_PATH);
var_dump($path); // NULL,Weil URL Kein Pfadteil
Der hier zurückgegebene Null ist ein Ergebnis für einen bestimmten Teil, was darauf hinweist, dass der Teil nicht existiert.
Zusammenfassen:
Rückgabe -Null kann eine Anfrage für eine URL -Komponente sein, die nicht vorhanden ist.
Es kann auch sein, dass ein leerer String- oder unregelmäßiger Parameter übergeben wurde und die spezifische Leistung von der PHP -Version abhängt.
Rückgabewert | Bedeutung | Typische Szenarien |
---|---|---|
FALSCH | Die URL ist falsch und kann nicht analysiert werden | Die Eingabezeichenfolge enthält illegale Zeichen oder strukturelle Ausnahmen |
NULL | Die angeforderte URL -Komponente existiert nicht oder eine leere Zeichenfolge | Fordern Sie einen Teil an, der nicht existiert, oder übergeben Sie eine leere Zeichenfolge |
In der tatsächlichen Entwicklung wird empfohlen:
Überprüfen Sie zunächst, ob die URL -Zeichenfolge leer oder das Format offensichtlich falsch ist, um nicht in illegalen Zeichenfolgen zu bestehen.
Wenn Sie Parse_url aufrufen, stellen Sie fest, ob das Rückgabeergebnis Null ist, um den Fehler des Programms zu vermeiden.
Vor der Parsen können Sie regelmäßige oder Filterfunktionen verwenden, um die URL -Struktur zunächst zu überprüfen, um die Robustheit der Programme zu verbessern.
Zum Beispiel:
$url = "https://gitbox.net";
$host = parse_url($url, PHP_URL_HOST);
if ($host === null) {
echo "URL Keiner in host Teil\n";
} else {
echo "Host: $host\n";
}
Durch ein vernünftiges Urteilsvermögen können logische Fehler durch Null oder False vermieden werden.