我想从网址更改网址查询字符串值。
例如:
我有这个网址:www.example.com/site-post/234-1993/
假设234是person_id,1993是person_year。在没有重写规则的情况下,URL如下所示:
www.example.com/site-post/?person_id=234&person_year=1993

当我按下按钮时,我想更改值234和1993。

我有一个适用于不友好网址的功能。

function update_permalink(uri, key, value) {
    var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
    var separator = uri.indexOf('?') !== -1 ? "&" : "?";
    if (uri.match(re)) {
        return uri.replace(re, '$1' + key + "=" + value + '$2');
    }
    else {
        return uri + separator + key + "=" + value;
    }
}


如果我调用此函数,它将更改我的网址www.example.com/site-post/234-1993/ to www.example.com/site-post/234-1993/?person_id=234&person_year=1993

是否有人知道如何在不将当前网址附加到查询字符串的情况下仅更改值的情况下更改网址?

最佳答案

我不太确定为什么要这样做,但是这段代码应该可以工作:

function update_permalink(uri, param1, param2) {
  var re = uri.match(/([^\?]*)\/site-post\/(\d*)-(\d*)\//);
  if (uri.match(/([^\?]*)\/site-post\/(\d*)-(\d*)\//)){
    uri = uri.replace(re[2],param1);
    uri = uri.replace(re[3],param2);
    return uri;
  }
}


然后像这样使用:

update_permalink("www.example.com/site-post/234-1993/",112,113);


结果:

www.example.com/site-post/112-113/

07-27 18:42