url.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package url
  2. import (
  3. netUrl "net/url"
  4. "strings"
  5. )
  6. // ParseUrl parse url_string
  7. // php parse_url
  8. func ParseUrl(rawURL string) (*netUrl.URL, error) {
  9. return netUrl.Parse(rawURL)
  10. }
  11. // UrlEncode url-encode string
  12. // php urlencode
  13. func UrlEncode(str string) string {
  14. return netUrl.QueryEscape(str)
  15. }
  16. // UrlDecode url-decode string
  17. // php urldecode
  18. func UrlDecode(str string) (string, error) {
  19. return netUrl.QueryUnescape(str)
  20. }
  21. // RawUrlEncode raw url-encode string
  22. // php rawurlencode
  23. func RawUrlEncode(str string) string {
  24. return strings.Replace(netUrl.QueryEscape(str), "+", "%20", -1)
  25. }
  26. // RawUrlDecode raw url-decode string
  27. // php rawurldecode
  28. func RawUrlDecode(str string) (string, error) {
  29. return netUrl.QueryUnescape(strings.Replace(str, "%20", "+", -1))
  30. }
  31. // HttpBuildQuery http build query
  32. // php http_build_query
  33. func HttpBuildQuery(queryData map[string]string) string {
  34. var uri netUrl.URL
  35. q := uri.Query()
  36. for key, value := range queryData {
  37. if strings.TrimSpace(value) != "" {
  38. q.Add(key, value)
  39. }
  40. }
  41. return q.Encode()
  42. }