【问题标题】:Convert a query string to a url将查询字符串转换为 url
【发布时间】:2013-11-26 17:10:33
【问题描述】:

我是操作 url 字符串的新手。

基本上,我有一个用户可以填写的包含大量输入的表单。提交时 url 格式如下:

  search.html?goingToArea=Yorkshire&leavingOn1=2013-11-26

删除 goToArea 和 leaveOn1 的最佳方法是什么,并将 = 替换为 / 来制作

 ..Yorkshire/2013-11-26/...

我见过的大多数示例要么将 URL 转换为查询字符串(与我的问题相反),要么返回 JSON 对象,而不是 URL。我看过 RegEx 和 jquery BBQ。这些是正确的方法吗?它适用于移动网站,可以帮助您提出任何建议。谢谢

【问题讨论】:

  • 大多数情况下,在服务器端捕获值并将其转换为您需要的任何值要容易得多。
  • 这是 C# 中的正则表达式,可能是一个开始 [\?!&].*?=

标签: jquery url query-string


【解决方案1】:

使用javascript“替换”功能和正则表达式:

var urlString = "search.html?goingToArea=Yorkshire&leavingOn1=2013-11-26";
    urlString = urlString.replace(/\?(.+?)=/i, '/');
    urlString = urlString.replace(/\&(.+?)=/i, '/');

    console.log(urlString);
    // return => "search.html/Yorkshire/2013-11-26"

第一个操作替换“?”之间的所有内容和一个“=”和一个“/”(开头或 URL)。

第二个操作将“&”和“=”之间的所有内容替换为“/”(URL 的其余部分)。

【讨论】:

    【解决方案2】:

    您可以使用正则表达式,但这里有一个非正则表达式的解决方案。不是很优雅,但它应该可以工作。

    var splitted = "search.html?goingToArea=Yorkshire&leavingOn1=2013-11-26".split('&'); 
    var place = splitted[0].split('=')[1]; 
    var date = splitted[1].split('=')[1]; 
    console.log(place + '/' + date);
    

    JSFIDDLE DEMO

    显然,这假定 URL 的顺序正确。即,如果 goingToArealeavingOn1 在 URL 中互换,这将不起作用。

    【讨论】:

      【解决方案3】:
       var qs = url.substring(url.indexof('?') + 1);
       var p = qs.split('&');
       var res = [];
       for( var i=0; i < p.length; p++ ) {
       var required_val = p.split('=')[1];
       res.push(required_val);
       } 
      
       var ans = url.substring(0, url.indexof('?')) + res.join('/');
      

      【讨论】:

        【解决方案4】:

        为什么要在 JS 中做呢?

        最好的方法是使用网络服务器重写。

        因此,如果您使用的是 Apache HTTP Server,请在此处查看 mod_rewrite - http://httpd.apache.org/docs/current/mod/mod_rewrite.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多