Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sind die Ergebnisse der Methode gourl.ParseQuery so unerwartet?

Warum sind die Ergebnisse der Methode gourl.ParseQuery so unerwartet?

PHPz
PHPznach vorne
2024-02-10 16:50:071131Durchsuche

为什么 gourl.ParseQuery 方法的结果如此意外?

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!

Frageninhalt

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

Zugehörige Codeausschnitte:

case '+':
            if mode == encodequerycomponent {
                t.writebyte(' ')
            } else {
                t.writebyte('+')
            }

Die Lösung ist die Kodierung🎜)🎜 🎜So: 🎜
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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen