引用URL的查询字符串

时间:2013-11-10 00:21:02

标签: javascript php regex

使用php或javascript或regex,是否有一个快速(希望一行)从前一个(引用者)URL获取查询字符串?

实施例,

用户在

www.sample.com?one

然后点击链接转到

www.sample.com?two

从第二页开始......我想知道以前的查询字符串“one”。

3 个答案:

答案 0 :(得分:2)

这或许?

var qs = document.referrer.split('?')[1] || '';

看起来这是一场比赛:)

var r = document.referrer,
    indexOfQm = r.indexOf('?'),
    len = r.length;

/(?:[^?]+)\??(.*)/.exec(r)[1];

r.split('?').shift().pop() || '';

r.slice(indexOfQm === -1? len : indexOfQm - len + 1);

r.substring(indexOfQm === -1? len : indexOfQm + 1);

r.replace(/^.+?(?:\?(.*)|$)/, '$1');

r.split('').slice(indexOfQm + 1).join('');

[].reduce.call(r, function (res, c) {
    if (res.found) res.qs += c;
    else if (c === '?') res.found = true;

    return res;
}, { found: false, qs: '' }).qs;

答案 1 :(得分:2)

您需要在服务器端获取引荐来源字符串。

如果使用PHP,它就像这样简单:

$referrer = $_SERVER['HTTP_REFERER'];

然后将字符串拆分为'?'签到一个数组,你有数组索引1

的查询字符串

答案 2 :(得分:2)

这是每行一个单行:

document.referrer.split("?").slice(1).join("?")
document.referrer.substring(document.referrer.indexOf("?") + 1)
/(?:\?(.+))?/.exec(document.referrer)[1]
不过,

referrer并不是一件好事。人们可以并且确实将它们关闭。 (我愿意。)考虑使用cookie或本地存储。