PHP:向网址添加参数?

时间:2012-02-04 04:04:02

标签: php

如果我有网址mysite.com/test.php?id=1。页面加载时设置id,可以是任何内容。那里还可能有其他人,例如?id=1&sort=new。有没有办法只是添加另一个到最后,而不是先找到其他人然后建立一个新的网址?谢谢。

3 个答案:

答案 0 :(得分:21)

作为Kolink答案的替代方案,我想我会利用http_build_query()。这样,如果查询字符串中没有任何内容,则不会获得额外的&。虽然,它根本不会产生任何影响。 Kolink的答案非常好。我发布此主要是为了向您介绍http_build_query(),因为您稍后可能需要它:

http_build_query(array_merge($_GET, array('newvar'=>'123')))

基本上,我们使用http_build_query()来获取$_GET中的所有内容,并将其与我们想要的任何其他参数的数组合并。在这个例子中,我只是使用你的example参数动态创建一个数组。在实践中,你可能已经在某个地方拥有了这样的数组。

答案 1 :(得分:2)

"?".$_SERVER['QUERY_STRING']."&newvar=123";

类似的东西。

答案 2 :(得分:0)

使用此功能:https://github.com/patrykparcheta/misc/blob/master/addQueryArgs.php

function addQueryArgs(array $args, string $url)
{
    if (filter_var($url, FILTER_VALIDATE_URL)) {
        $urlParts = parse_url($url);
        if (isset($urlParts['query'])) {
            parse_str($urlParts['query'], $urlQueryArgs);
            $urlParts['query'] = http_build_query(array_merge($urlQueryArgs, $args));
            $newUrl = $urlParts['scheme'] . '://' . $urlParts['host'] . $urlParts['path'] . '?' . $urlParts['query'];
        } else {
            $newUrl = $url . '?' . http_build_query($args);
        }
        return $newUrl;

    } else {
        return $url;
    }
}

$newUrl = addQueryArgs(array('add' => 'this', 'and' => 'this'), 'http://example.com/?have=others');
相关问题