In der PHP-Entwicklung wird die Methode gourl.ParseQuery häufig zum Parsen von URL-Abfragezeichenfolgen verwendet. Manchmal stellen wir jedoch fest, dass die Ergebnisse dieser Methode unerwartet und verwirrend sind. Warum passiert dieser Unfall? Der PHP-Editor Baicao wird dieses Problem in diesem Artikel untersuchen und einige Lösungen bereitstellen. Lass uns einen Blick darauf werfen!
Das Ergebnis dieses Programms ist {"x":["1 1 3"], "y":["2", "3"]}
.
Aber warum nicht {"x":["1+1+3"], "y":["2", "3"]}
?
Was muss ich tun, um die erwarteten Ergebnisse zu erzielen "1+1+3"
?
import ( "encoding/json" "fmt" "log" "net/url" "strings" ) func main() { m, err := url.ParseQuery(`x=1+1+3&y=2&y=3`) if err != nil { log.Fatal(err) } fmt.Println(toJSON(m)) } func toJSON(m any) string { js, err := json.Marshal(m) if err != nil { log.Fatal(err) } return strings.ReplaceAll(string(js), ",", ", ") }
Sandbox: https://go.dev/play/p/o0tirtvpaqk
{"x":["1+1+3"], "y":["2", "3"]}
url.parsequery
将 +
替换为
Solution
url.parsequery
Ersetzen Sie +
durch
+
(替换为%2b
case '+': if mode == encodequerycomponent { t.writebyte(' ') } else { t.writebyte('+') }
import ( "encoding/json" "fmt" "log" "net/url" "strings" ) func main() { m, err := url.ParseQuery(`x=1%2B1%2B3&y=2&y=3`) if err != nil { log.Fatal(err) } fmt.Println(toJSON(m)) } func toJSON(m any) string { js, err := json.Marshal(m) if err != nil { log.Fatal(err) } return strings.ReplaceAll(string(js), ",", ", ") }
Das obige ist der detaillierte Inhalt vonWarum sind die Ergebnisse der Methode gourl.ParseQuery so unerwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!