2010-10-06 101 views
1

使用PHP我需要检查我附加信息的URL是否已经有参数。如何检查URL是否已经有一个参数?

因此,如果URL是

http://test.com/url?a=1 

我将需要添加& B = 2,即

http://test.com/url?a=1&b=2 

但是,如果URL是

http://test.com/url 

我需要追加

http://test.com/url?b=2 

是否可以在PHP中检查此内容?总之,我需要使用正确的分隔符(如果现有链接中没有“?”,或者如果现有链接中已经存在“?”,则为“&”)附加b = 2参数。

回答

3

不检查,但组装一个新
使用$ _GET数组和http_build_query()函数

+0

好的谢谢,有趣的想法!我以前没有使用过_GET数组,我怎么会用它记住我不知道可以将URL分成多少部分? – kitenski 2010-10-06 14:25:23

+0

@kitenski你不必在意。它会自动完成。 – 2010-10-06 14:50:00

+0

好的谢谢,请原谅我的无知,但你能给我一个_GET阵列如何工作的例子吗? – kitenski 2010-10-07 13:47:08

1

你可以使用parse_url()。 然后使用parse_str()获取查询片段,修改数组并使用http_build_query()重新创建查询字符串。

0

使用此功能,您可以拨打set('b', 2)或与set(array('a' => 1, 'b' => 2, 'c' => 3))一起设置多个值。

function set($name, $value='', $vars='') { 
    if (!$vars) $vars = $_SERVER['QUERY_STRING']; 
    parse_str($vars, $a); 
    if (!is_array($name)) $name = array($name => $value); 
    foreach ($name as $k => $v) { 
     $a[$k] = $v; 
     if ($v === '') unset($a[$k]); 
    } 
    $q = ''; 
    foreach ($a as $k => $v) $q .= ($q ? '&' : '') . $k . '=' . $v; 
    return $q ? '?' . $q : ''; 
} 
相关问题