在JavaScript中解析URL

lau*_*kok 76 javascript jquery parse-url

如何使用JavaScript解析URL(也使用jQuery)?

比如我在我的字符串中有这个,

url = "http://example.com/form_image_edit.php?img_id=33"
Run Code Online (Sandbox Code Playgroud)

我想得到的价值 img_id

我知道我可以使用PHP轻松完成这项工作parse_url(),但我想知道如何使用JavaScript.

Sin*_*hus 119

您可以使用创建a-element 的技巧,向其添加URL,然后使用其Location对象.

function parseUrl( url ) {
    var a = document.createElement('a');
    a.href = url;
    return a;
}

parseUrl('http://example.com/form_image_edit.php?img_id=33').search
Run Code Online (Sandbox Code Playgroud)

哪个会输出: ?img_id=33


您还可以使用php.js来获取JavaScript中parse_url函数.


更新(2012-07-05)

如果你需要做的不仅仅是超级简单的URL处理,我建议使用优秀的URI.js库.

  • 哇,从来不知道这个伎俩,它在整理了所有世界上最丑陋的正则表达式之后的第二天=) (9认同)
  • 这相当于`url.match(/\ ?. +/)[0]`,它更短,速度更快. (4认同)
  • @Christophe没有它向您显示可用的属性.将url分配给anchor元素的href属性时,它将获取Location对象的所有属性. (2认同)

Ray*_*oal 35

如果你的字符串被调用s那么

var id = s.match(/img_id=([^&]+)/)[1]
Run Code Online (Sandbox Code Playgroud)

会给你的.


mda*_*rre 10

试试这个:

var url = window.location;
var urlAux = url.split('=');
var img_id = urlAux[1]
Run Code Online (Sandbox Code Playgroud)


A. *_*son 6

现有的好jQuery插件Purl(一个JavaScript URL解析器).这个实用程序有两种使用方式 - 使用jQuery或不使用...


kob*_*obe 5

从谷歌得到它,尝试使用这种方法

function getQuerystring2(key, default_) 
{ 
    if (default_==null) 
    { 
        default_=""; 
    } 
    var search = unescape(location.search); 
    if (search == "") 
    { 
        return default_; 
    } 
    search = search.substr(1); 
    var params = search.split("&"); 
    for (var i = 0; i < params.length; i++) 
    { 
        var pairs = params[i].split("="); 
        if(pairs[0] == key) 
        { 
            return pairs[1]; 
        } 
    } 


return default_; 
}
Run Code Online (Sandbox Code Playgroud)

  • 如果查询参数的值包含'%3D'('=')或'%26'('&'),则会失败.要修正,使用该内部的for循环:````如果(pairs.shift()==键){返回pairs.join( '='); }````并在拆分'&'后执行unescape. (2认同)

Ily*_*mov 5

一个班轮:

location.search.replace('?','').split('&').reduce(function(s,c){var t=c.split('=');s[t[0]]=t[1];return s;},{})
Run Code Online (Sandbox Code Playgroud)

  • 好吧,在JS中,一切都是单行的:P (4认同)