Aktueller Standort: Startseite> Neueste Artikel> Dinge zu beachten, wenn es um Sonderfiguren geht

Dinge zu beachten, wenn es um Sonderfiguren geht

gitbox 2025-05-26

Die Syntax der Parse_url -Funktion ist sehr einfach:

 $url = "https://gitbox.net/path/to/page?name=Zhang San&age=25";
$parts = parse_url($url);
print_r($parts);

Ausgangsergebnis:

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /path/to/page
    [query] => name=Zhang San&age=25
)

Wie aus dem obigen Beispiel hervorgeht, kann Parse_url Protokoll, Host, Pfad und Abfrage erfolgreich analysieren.

2. Analyseprobleme, die durch Sonderzeichen verursacht werden

Zu den Sonderzeichen gehören Chinesen, Räume, # Zeichen, Prozentzeichen (%) usw. Diese Zeichen haben unterschiedliche Bedeutungen in der URL. Wenn die URL direkt eingegeben wird, kann Parse_url Fehler analysieren.

2.1 chinesische und nicht ascii-Zeichen

Wenn die URL chinesische oder andere Nicht-ASCII-Zeichen enthält, sollte die URL zuerst codiert werden, da ansonsten Parse_url möglicherweise nicht richtig analysiert werden.

Beispiel:

 $url = "https://gitbox.net/search?query=Wettervorhersage";
$parts = parse_url($url);
echo $parts['query'];  // Es kann verstümmelten Code ausgeben oder Fehler analysieren

Die richtige Art und Weise besteht darin, zuerst die Urlencode -Codierung zur Abfrageparameter zu verwenden:

 $query = urlencode("Wettervorhersage");
$url = "https://gitbox.net/search?query=$query";
$parts = parse_url($url);
echo $parts['query'];  // query=%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5

2.2 Räume und besondere Symbole

Leerzeichen müssen in der URL als %20 oder + codiert werden. Wenn Sie Leerzeichen direkt in die URL aufnehmen, kann Parse_url den Inhalt nach dem Speicherplatz abschneiden.

Beispiel:

 $url = "https://gitbox.net/search?keyword=hello world";
$parts = parse_url($url);
print_r($parts);

Zu diesem Zeitpunkt wird Parse_url denken, dass die URL nur Keyword = Hallo erreicht und die nachfolgende Welt ignoriert wird. Sollte geändert werden in:

 $url = "https://gitbox.net/search?keyword=hello%20world";
$parts = parse_url($url);
print_r($parts);

2.3 Handhabung von Pfundzeichen (#)

# wird verwendet, um Fragmentidentifikatoren (Fragment) in der URL darzustellen, die separat analysieren . Wenn # in der URL nicht direkt codiert ist, wird der nachfolgende Inhalt als Fragment betrachtet, was das Analyseergebnis beeinflussen kann.

Beispiel:

 $url = "https://gitbox.net/page?name=abc#section2";
$parts = parse_url($url);
print_r($parts);

Ausgabe:

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /page
    [query] => name=abc
    [fragment] => section2
)

Wenn # Teil des Parameterwerts ist, muss es als %23 codiert werden.

2,4 Doppelcodierungsproblem des Prozentzeichens (%)

Wenn die URL bereits prozentuale codierte Zeichen enthält, wird Parse_url nicht automatisch dekodiert, was zu Parsenfehlern führen kann. Insbesondere wenn die Codierung unvollständig ist, wird beispielsweise PARSE_URL einen Fehler melden, wenn %2 das letzte Bit fehlt.

Die Lösung besteht darin, sicherzustellen, dass alle Prozentcodes vollständig und gültig sind oder zuerst die URL erkennen und korrigieren.

3.. Häufig gestellte Fragen und Debugging -Vorschläge

  • Frage 1: Parse_url gibt falsche oder unvollständige Ergebnisse zurück <br> Der mögliche Grund ist, dass das URL -Format illegal ist oder illegale Zeichen enthält. Es wird empfohlen , filter_var ($ url, filter_validate_url) zu verwenden, um zuerst die Rechtmäßigkeit der URL zu überprüfen.

  • Frage 2: Inkonsistente Codierung führt zu Verwirrung des Parameters der Abfrage -Parameter <br> Stellen Sie sicher, dass alle Sonderzeichen korrekt codiert sind, insbesondere Abfragebräge und Pfadenteile.

  • Frage 3: Der Abfrageteil im Parsing-Ergebnis wird nicht in Schlüsselwertpaare aufgeteilt
    Parse_url ist nur für die Aufteilung der URL -Struktur verantwortlich und wird Abfrage nicht in ein Array analysiert. Es kann mit der Parse_str -Funktion kombiniert werden:

 parse_str($parts['query'], $queryParams);
print_r($queryParams);

4. Zusammenfassung

  • Stellen Sie vor der Verwendung von Parse_url sicher, dass die URL -Zeichenfolge legal ist und die Sonderzeichen korrekt codiert sind.

  • Chinesische und nicht ascii-Zeichen müssen Urlencode sein.

  • Spezielle Symbole wie Räume, # , % müssen speziell auf die Codierung beachtet werden.

  • Bei Abfrageparametern kann Parse_str verwendet werden, um weiter in ein Array zu analysieren.

  • Überprüfen Sie bei der Begegnung einer Parsing -Ausnahme zuerst das URL -Format und debuggen Sie dann das Codierungsproblem.

Wenn Sie die oben genannten Vorsichtsmaßnahmen beherrschen, können Sie mit Parse_url mit komplexen oder speziellen Zeichen -URLs bequemer werden.

Beispielcode Zusammenfassung

 $url = "https://gitbox.net/search?query=" . urlencode("Wettervorhersage#1");
$parts = parse_url($url);
print_r($parts);

if (isset($parts['query'])) {
    parse_str($parts['query'], $queryParams);
    print_r($queryParams);
}

Dieser Code zeigt die Verarbeitung von chinesischen und # Zeichen und die Analyse von Abfrageparametern.