只是想知道。我見過很多網站用這種URL http://www.something.com/?somedata與「somedata」是價值一些「未提及」變量php變量較少的說法?
我怎麼可以做這樣的事情?我所知道的是傳統的http://www.something.com/index.php?arg=somedata
非常感謝
只是想知道。我見過很多網站用這種URL http://www.something.com/?somedata與「somedata」是價值一些「未提及」變量php變量較少的說法?
我怎麼可以做這樣的事情?我所知道的是傳統的http://www.something.com/index.php?arg=somedata
非常感謝
您通常可以訪問使用$_SERVER["QUERY_STRING"]
完整的查詢字符串。
我認爲每個主流web服務器都提供了這個變量,我對Apache有100%的把握,對IIS也很肯定。
他們可能使用某種URL重寫(見Apache mod_rewrite的),其中的網址與http://www.something.com/?somedata轉化爲http://www.something.com/index.php?arg=somedata
不是在這種情況下 - 這是一個完全正常的查詢字符串,不需要重寫。 – 2010-04-28 07:38:41
乾淨的URL的URL重寫會產生類似於「http://www.something.com/index/somedata」 – selfawaresoup 2010-04-28 07:47:29
這僅僅是沒有價值的變量。您可以使用list($value) = array_keys($_GET);
獲得該字符串 - 假設您已確保$_GET
陣列(count($_GET) === 1
)中只有一個值,否則您將收到錯誤(如果$count === 0
)或不需要的行爲(如果$count > 1
)。
的東西沒有什麼能阻止你閱讀'$ _GET ['somedata']' – 2010-04-28 07:59:10
不,它不會*,如果你知道你期望的確切字符串*。我想到了一個你不知道密鑰的場景,比如'search.php?mysearchstring'。此外:問題的標題是'無變量參數' – soulmerge 2010-04-28 08:09:41
這是IMO的最佳解決方案。爲什麼會得到低投票?任何解釋? – 2010-04-28 08:10:34
爲了您指定的URL你可以遍歷$ _GET數組:
foreach ($_GET as $key => $value) {
if ($key == 'somedata') {
//do something
}
}
你會發現在$ _GET密鑰的參數。
您還可以使用array_keys($_GET)
從$ _GET中提取密鑰。
自從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
}
?>
它只是一個布爾值的快捷方式。
somedata相當於somedata = 1個或somedata =真
當它檢查服務器端,可變的存在本身就足以寫的條件。
if (isset($_GET['somedata'])) {
//do something
}
你看到的是「的價值一些‘未提及’變量」更一般地被認爲是沒有價值的查詢字符串參數。因此,對於foo=bar&baz
,foo
具有值bar
和baz
沒有值(在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) {
}
*/
PHP允許通過'$ _GET'關聯數組直接訪問GET變量。沒有必要分析查詢字符串。 – 2010-04-28 08:00:30
@ÁlvaroG. Vicario,Pekka從來沒有提到解析任何東西:這個答案指的是獲取完整的查詢字符串。 – salathe 2010-04-28 08:38:03