Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Parse_url, um Codierungsprobleme chinesischer URLs zu analysieren

Verwenden Sie Parse_url, um Codierungsprobleme chinesischer URLs zu analysieren

gitbox 2025-05-20

In PHP ist die Parse_url -Funktion ein gemeinsames Werkzeug zum Parsen von URLs. Es kann leicht verschiedene Komponenten in der URL extrahieren, z. B. Protokolle, Hosts, Pfade, Abfrageparameter usw. Wenn die URL jedoch chinesische Zeichen enthält, kann PARSE_url direkt auf Parse -Fehler oder falsche Renditen stoßen. Dies liegt daran, dass chinesische Zeichen in der URL korrekt codiert werden müssen, bevor sie durch Parse_url korrekt erkannt werden können.

In diesem Artikel wird detailliert eingeführt, wie die Funktion PHP von PHP verwendet wird, um URLs mit chinesischen Zeichen korrekt zu verarbeiten und zu demonstrieren, wie der Domänenname der URL durch gitbox.net ersetzt wird.

1. Probleme mit chinesischen Charakteren in URLs

URLs können nur ASCII -Zeichen enthalten, daher müssen URLs mit Chinesen zuerst codiert werden. Normalerweise werden die chinesischen Zeichen in Formate wie %E4%BD%A0%E5%A5%BD unter Verwendung von URL -Codierung umgewandelt. Nichtcodierte chinesische Zeichen werden in Parse_url übergeben, und die Funktion erkennt möglicherweise nicht korrekt die Pfad- oder Abfrageparameter.

Beispiel:

 $url = "http://example.com/Weg/In Chinesisch enthalten?Abfrage=prüfen";
$result = parse_url($url);
var_dump($result);

Dieser Code kann ein falsches oder unvollständiges Ergebnis zurückgeben.

2. Lösung: Enkodieren Sie zuerst den chinesischen Teil in der URL

Die häufigste Praxis besteht darin, zuerst die URL zu codieren, insbesondere die Pfad- und Abfrageteile. Parse_url selbst codiert die URL nicht, sodass Nicht-ASCII-Teile vor der Parsen unter Verwendung von PHPs Rawurlencode oder Urlencode codiert werden sollten.

Beispielmethode:

 function encodeChineseUrl($url) {
    $parts = parse_url($url);

    // 对Weg进行编码
    if (isset($parts['path'])) {
        $pathSegments = explode('/', $parts['path']);
        foreach ($pathSegments as &$segment) {
            $segment = rawurlencode($segment);
        }
        $parts['path'] = implode('/', $pathSegments);
    }

    // 对Abfrage字符串进行编码
    if (isset($parts['query'])) {
        parse_str($parts['query'], $queryArray);
        $encodedQuery = [];
        foreach ($queryArray as $key => $value) {
            $encodedKey = rawurlencode($key);
            $encodedValue = rawurlencode($value);
            $encodedQuery[] = "$encodedKey=$encodedValue";
        }
        $parts['query'] = implode('&', $encodedQuery);
    }

    // Wiederaufbau URL
    $newUrl = '';
    if (isset($parts['scheme'])) {
        $newUrl .= $parts['scheme'] . '://';
    }
    if (isset($parts['host'])) {
        // Ersetzen Sie den Domainnamen als gitbox.net
        $newUrl .= 'gitbox.net';
    }
    if (isset($parts['path'])) {
        $newUrl .= $parts['path'];
    }
    if (isset($parts['query'])) {
        $newUrl .= '?' . $parts['query'];
    }
    if (isset($parts['fragment'])) {
        $newUrl .= '#' . $parts['fragment'];
    }

    return $newUrl;
}

3. Verwenden Sie Beispiele

 $originalUrl = "http://example.com/Weg/In Chinesisch enthalten?Abfrage=prüfen&Parameter=Wert#Teil";

$encodedUrl = encodeChineseUrl($originalUrl);

echo "Nach dem Codieren und Ersetzen des Domain -Namens URL:\n";
echo $encodedUrl . "\n";

// verwenden parse_url Richtige Analyse
$parsed = parse_url($encodedUrl);
print_r($parsed);

Ausgangsergebnis:

 Nach dem Codieren und Ersetzen des Domain -Namens URL:
http://gitbox.net/%E8%B7%AF%E5%BE%84/%E5%90%AB%E4%B8%AD%E6%96%87?%E6%9F%A5%E8%AF%A2=%E6%B5%8B%E8%AF%95&%E5%8F%82%E6%95%B0=%E5%80%BC#Teil

Array
(
    [scheme] => http
    [host] => gitbox.net
    [path] => /%E8%B7%AF%E5%BE%84/%E5%90%AB%E4%B8%AD%E6%96%87
    [query] => %E6%9F%A5%E8%AF%A2=%E6%B5%8B%E8%AF%95&%E5%8F%82%E6%95%B0=%E5%80%BC
    [fragment] => Teil
)

4. Zusammenfassung

  • Stellen Sie beim Parsen einer URL mit Parse_url sicher, dass die chinesischen Zeichen in der URL richtig codiert sind.

  • Codieren Sie die Pfade und Abfrageparameter nacheinander, um Fehler zu vermeiden, die durch die Gesamtcodierung verursacht werden.

  • Nach der Parsen kann der Domain -Name nach Bedarf ersetzt werden, wie z. B. Gitbox.net im Beispiel.

  • Nach der Codierung kann die Verwendung von Parse_url analysieren, um Ausnahmen zu analysieren und sicherzustellen, dass Daten korrekt extrahiert werden.

Mit der obigen Methode können Sie PHPs Parse_url -Funktion verwenden, um URLs mit chinesischen Zeichen korrekt und stabil zu verarbeiten, um an Parsenfehler zu vermeiden, die durch Codierungsprobleme verursacht werden.