2010-10-06 299 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 : ''; 
} 
相關問題