2010-04-28 30 views

回答

1

您通常可以訪問使用$_SERVER["QUERY_STRING"]完整的查詢字符串。

我認爲每個主流web服務器都提供了這個變量,我對Apache有100%的把握,對IIS也很肯定。

+1

PHP允許通過'$ _GET'關聯數組直接訪問GET變量。沒有必要分析查詢字符串。 – 2010-04-28 08:00:30

+0

@ÁlvaroG. Vicario,Pekka從來沒有提到解析任何東西:這個答案指的是獲取完整的查詢字符串。 – salathe 2010-04-28 08:38:03

4

這僅僅是沒有價值的變量。您可以使用list($value) = array_keys($_GET);獲得該字符串 - 假設您已確保$_GET陣列(count($_GET) === 1)中只有一個值,否則您將收到錯誤(如果$count === 0)或不需要的行爲(如果$count > 1)。

+1

的東西沒有什麼能阻止你閱讀'$ _GET ['somedata']' – 2010-04-28 07:59:10

+0

不,它不會*,如果你知道你期望的確切字符串*。我想到了一個你不知道密鑰的場景,比如'search.php?mysearchstring'。此外:問題的標題是'無變量參數' – soulmerge 2010-04-28 08:09:41

+2

這是IMO的最佳解決方案。爲什麼會得到低投票?任何解釋? – 2010-04-28 08:10:34

0

爲了您指定的URL你可以遍歷$ _GET數組:

foreach ($_GET as $key => $value) { 
    if ($key == 'somedata') { 
     //do something 
    } 
} 

你會發現在$ _GET密鑰的參數。

您還可以使用array_keys($_GET)從$ _GET中提取密鑰。

0

自從web開始以來,大多數Web服務器都允許爲目錄定義一個默認文件名。所以,如果你加載http://example.com/它提供這樣的文件(通常爲index.html)。在支持PHP的系統中,通常使用index.php作爲此目的,但確切名稱可以更改。在Apache中:

http://httpd.apache.org/docs/2.2/en/mod/mod_dir.html#directoryindex

隨着對?somedata,它只是沒有值(或者,更準確地說,它的值是一個空字符串)的變量。如果您只需要知道變量是否設置,您可以使用它:

<?php 

if(isset($_GET['somedata'])){ 
    // Do some stuff 
} 

?> 
1

它只是一個布爾值的快捷方式。

somedata相當於somedata = 1個或somedata =真

當它檢查服務器端,可變的存在本身就足以寫的條件。

if (isset($_GET['somedata'])) { 
    //do something 
} 
1

你看到的是「的價值一些‘未提及’變量」更一般地被認爲是沒有價值的查詢字符串參數。因此,對於foo=bar&bazfoo具有值barbaz沒有值(在PHP中,它的值將是一個空字符串)。

由於其他答案提供了訪問該參數名稱的不同方法,這裏是我的兩分錢。您可以使用key函數獲取$_GET陣列的第一個密鑰。如果沒有密鑰可用,則key將返回NULL。

訪問?somedata=somevalue

var_dump(key($_GET), $_GET); 
/* 
string(8) "somedata" 
array(1) { 
    ["somedata"]=> 
    string(9) "somevalue" 
} 
*/ 

訪問?somedata

var_dump(key($_GET), $_GET); 
/* 
string(8) "somedata" 
array(1) { 
    ["somedata"]=> 
    string(0) "" 
} 
*/ 

訪問?

var_dump(key($_GET), $_GET); 
/* 
NULL 
array(0) { 
} 
*/