Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das Problem verstümmelter URL-Anforderungsparameter, die PHP empfängt
Mit der Entwicklung des Internets nimmt auch die Schwierigkeit der Website-Entwicklung zu und PHP als sehr häufig verwendete Sprache wird von immer mehr Entwicklern verwendet. Bei der PHP-Entwicklung treten jedoch manchmal Probleme auf, z. B. verstümmelte Zeichen beim Empfang von URL-Anforderungsparametern. Wie kann man dieses Problem lösen? Als nächstes analysieren wir es Schritt für Schritt.
Zuerst müssen wir einige gängige URL-Kodierungsmethoden verstehen. Zu den gängigen Kodierungsmethoden gehören URL-Kodierung und Base64-Kodierung. Unter diesen wandelt die URL-Codierung hauptsächlich bestimmte Zeichen in die Form %xx um, um die Übertragung im http-Protokoll zu erleichtern. Bei der Base64-Kodierung werden die ursprünglichen Textdaten kodiert und unter bestimmten Regeln in eine andere Form umgewandelt, die für die Übertragung von Text, Bildern und anderen Daten im Netzwerk verwendet werden kann.
Warum erscheinen beim Empfang von URL-Anfrageparametern verstümmelte Zeichen? Tatsächlich liegt dies daran, dass bei der URL-Übertragung Kodierungsmethoden wie Chinesisch in einer bestimmten Kodierungsform gespeichert werden und die URLdecode-Funktion von PHP nur die Kodierungsform application/x-www-form-urlencoded dekodieren kann. Für andere Kodierungsformen ist dies nicht möglich dekodiert werden, was zu verstümmelten Zeichen führt.
Um dieses Problem zu lösen, müssen wir die beiden Erweiterungen mbstring und iconv in PHP verwenden. Die mbstring-Erweiterung wird hauptsächlich zur Verarbeitung von Multibyte-Zeichen verwendet und kann Zeichenkodierungen in mehreren Sprachen unterstützen, während die iconv-Erweiterung hauptsächlich zur Zeichensatzkonvertierung verwendet wird. Diese beiden Erweiterungen können zusammen verwendet werden, um uns bei der Lösung des Problems verstümmelter URL-Anfrageparameter zu helfen.
Schauen wir uns nun zum besseren Verständnis ein konkretes Beispiel an.
Angenommen, wir haben die folgende URL-Anfrage: https://www.example.com/index.php?name=%E6%B5%8B%E8%AF%95&age=18
Daunter ist der Wert des Namens „test“, die verwendete Codierungsmethode ist die UTF-8-Codierung. Wenn $_GET[‘name’] direkt verwendet wird, um den Wert des Namensparameters zu erhalten, werden verstümmelte Zeichen angezeigt. Zu diesem Zeitpunkt können wir den folgenden Code zum Dekodieren verwenden:
$name = $_GET['name'];
$name = urldecode($name);
$name = iconv('utf-8', 'gbk ' , $name);
$name = mb_convert_encoding($name, 'utf-8', 'gbk');
Dabei dient die erste Codezeile dazu, den Wert des Namensparameters zu erhalten, und die zweite Zeile Der Code besteht darin, den Wert des Namensparameters zu erhalten und %E6%B5%8B%E8%AF%95 in den chinesischen „Test“ zu dekodieren In das GBK-Format konvertieren. Die vierte Codezeile besteht darin, das Codierungsformat vom GBK- in das UTF-8-Format zu konvertieren. Am Ende erhalten Sie den korrekten chinesischen „Test“.
Hier ist zu beachten, dass bei Verwendung anderer Kodierungsmethoden, wie z. B. gb2312-Kodierung, „gbk“ in der dritten Codezeile in „gb2312“ geändert werden muss, da sonst weiterhin verstümmelte Zeichen angezeigt werden.
Darüber hinaus können wir eine ähnliche Methode auch verwenden, um andere Parameter in der URL-Anfrage zu dekodieren. Der spezifische Code lautet wie folgt:
$age = $_GET['age'];
$age = urldecode($age);
$age = iconv('utf-8', 'gbk', $age);
$age = mb_convert_encoding($age, 'utf-8', 'gbk');
Wenn andere Kodierungsmethoden verwendet werden, müssen Sie ebenfalls „gbk“ in die entsprechende Kodierungsmethode ändern.
Zusammenfassend lässt sich sagen: Wenn wir auf das Problem verstümmelter URL-Anforderungsparameter stoßen, können wir es durch die beiden Erweiterungen mbstring und iconv lösen. Der spezifische Vorgang besteht darin, zuerst die URL des Parameterwerts zu dekodieren, dann das Kodierungsformat von der Anforderungskodierungsmethode in die Zielkodierungsmethode umzuwandeln und schließlich das Kodierungsformat wieder in die Anforderungskodierungsmethode umzuwandeln. Aus Platzgründen sind die hier erläuterten Operationsergebnisse möglicherweise nicht vollständig. Es wird empfohlen, bei der Verwendung weitere Referenzmaterialien heranzuziehen, um die Richtigkeit und Wirksamkeit sicherzustellen.
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter URL-Anforderungsparameter, die PHP empfängt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!