url.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. func ParseString(str string) (*netUrl.URL, error) {
  12. return netUrl.ParseRequestURI(str)
  13. }
  14. // UrlEncode url-encode string
  15. // php urlencode
  16. func UrlEncode(str string) string {
  17. return netUrl.QueryEscape(str)
  18. }
  19. // UrlDecode url-decode string
  20. // php urldecode
  21. func UrlDecode(str string) (string, error) {
  22. return netUrl.QueryUnescape(str)
  23. }
  24. // RawUrlEncode raw url-encode string
  25. // php rawurlencode
  26. func RawUrlEncode(str string) string {
  27. return strings.Replace(netUrl.QueryEscape(str), "+", "%20", -1)
  28. }
  29. // RawUrlDecode raw url-decode string
  30. // php rawurldecode
  31. func RawUrlDecode(str string) (string, error) {
  32. return netUrl.QueryUnescape(strings.Replace(str, "%20", "+", -1))
  33. }
  34. // HttpBuildQuery http build query
  35. // php http_build_query
  36. func HttpBuildQuery(queryData map[string]string) string {
  37. var uri netUrl.URL
  38. q := uri.Query()
  39. for key, value := range queryData {
  40. if strings.TrimSpace(value) != "" {
  41. q.Add(key, value)
  42. }
  43. }
  44. return q.Encode()
  45. }