在 JavaScript 中解析 URL

IT技术 javascript jquery parse-url
2021-02-02 02:43:02

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

例如,我的字符串中有这个,

url = "http://example.com/form_image_edit.php?img_id=33"

我想获得的value img_id

我知道我可以使用 PHP 轻松完成此操作parse_url(),但我想知道使用 JavaScript 是如何实现的。

6个回答

您可以使用创建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

这将输出: ?img_id=33


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


更新 (2012-07-05)

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

@SindreSorhus 太棒了!您能否分享一个解释它并详细说明浏览器支持的参考资料?对于具有 src 属性(链接、iframe)的元素也是如此吗?
2021-03-15 02:43:02
窗口位置搜索
2021-03-23 02:43:02
这相当于url.match(/\?.+/)[0],它稍微短一些并且可能快很多。
2021-03-31 02:43:02
@Christophe 不,它会向您显示可用的属性。当您将 url 分配给锚元素的 href 属性时,它会获得 Location 对象的所有属性。
2021-04-08 02:43:02
哇,从来不知道这个技巧,它让我在整理了世界上所有最丑陋的正则表达式后度过了一天=)
2021-04-12 02:43:02

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

var id = s.match(/img_id=([^&]+)/)[1]

会给你的。

试试这个:

var url = window.location;
var urlAux = url.split('=');
var img_id = urlAux[1]
使用这种方法后,我怎样才能找到这个被分成多少个?
2021-03-16 02:43:02

一个班轮:

location.search.replace('?','').split('&').reduce(function(s,c){var t=c.split('=');s[t[0]]=t[1];return s;},{})
好吧,在 JS 中,一切都是单行的 :P
2021-04-12 02:43:02

现有的优秀 jQuery 插件Purl(一个 JavaScript URL 解析器)。该实用程序可以通过两种方式使用 - 使用 jQuery 或不使用...