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.
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.
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;
}
$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
)
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.