在PHP開發中,gourl.ParseQuery方法被廣泛應用於解析URL查詢字串。然而,有時候我們會發現方法的結果出乎意料,出現了一些令人困惑的情況。為什麼會出現這種意外? php小編百草將在本文中探討這個問題,並提供一些解決方法。讓我們一起來看看吧!
該程式的結果是{"x":["1 1 3"], "y":["2", "3"]}
。
但為什麼不是 {"x":["1 1 3"], "y":["2", "3"]}
呢?
我需要做什麼才能得到預期的結果"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), ",", ", ") }
沙盒:https://go.dev/play/p/o0tirtvpaqk
{"x":["1 1 3"], "y":["2", "3"]}
url.parsequery
將
替換為
#相關程式碼片段:
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), ",", ", ") }
以上是為什麼 gourl.ParseQuery 方法的結果如此意外?的詳細內容。更多資訊請關注PHP中文網其他相關文章!