C 獲取URL引數值

2021-07-15 12:28:52 字數 2780 閱讀 7468

在寫程式的時候,我們經常需要對頁面進行傳引數,比如page?id=1234,那麼在page這個頁面中就直接可以用

string id = request.querystring["id"];

來獲取引數id的值1234了。這是乙個人人都知道的基礎知識。

上面的方法:request.querystring,它會把傳入的url進行分析,並把結果儲存在乙個鍵值(key value)的collection中,我們只要通過設定key值,就可以返回這個key所對應的value了。

假設這個url不是通過請求進來的,我們是沒有辦法通過request來獲取url的引數值的,我們是否可以通過乙個字串string url = ""中分析出collection[key]=value呢?而且很多時候我們的url的引數都是經過urlencode編碼的,這個編碼通常來說會是encoding.utf8或者encoding.getencoding("gb2312"),需要提醒你的是:baidu的url是使用gb2312的,而google是使用utf8的。那對於傳入的字串我們如何確認是該使用gb2312還是utf8來解碼呢?

在baidu或者google搜尋到相關的解決辦法中,你會看到這樣的說法,那就是通過正規表示式去匹配url,例如:regex urlregex = new regex(@"(?:^|\?|&)courseid=(\d*)(?:&|$)"); 但是我比較懷疑通過這個方法分析出來的資料完整性,它有辦法確保匹配出所有資料嗎?後來我想到了模擬microsoft .net framework中request的方法來解決這個問題。其實上面的string id = request.querystring["id"]; 也可以寫成 system.collections.specialized.namevaluecollection col = request.querystring; string strid = col[」id」];所以讓我們來構造這個namevaluecollection吧!

code highlighting produced by actipro codehighlighter (freeware)>/// /// 測試.

///

public void test()

/// /// 將查詢字串解析轉換為名值集合.

///

///

///

public static namevaluecollection getquerystring(string querystring)

/// /// 將查詢字串解析轉換為名值集合.

///

///

///

///

///

public static namevaluecollection getquerystring(string querystring, encoding encoding, bool isencoded)

}else if (item == '&')

i++;

}string key = null;

string value = null;

if (index >= 0)

else

if (isencoded)

else

if ((i == (count - 1)) && (querystring[i] == '&'))}}

return result;

}/// /// 解碼url.

///

/// null為自動選擇編碼

說明

1.對於下面的編碼方式中,baidu是使用gb2312,而google是使用utf8的,所以這些編碼如何解釋呢?

解決辦法就是如myurldecode方法所寫的,把編碼

進行一次解碼,再把解碼後的字串進行編碼,再對字串進行比較,如果是相同的,那就是使用了這種編碼的。還要注意進行

toupper字串。

關於return

getquerystring(querystring, 

null

, true

); 如果你傳入的是null,那就是表示你無法確認編碼是gb2312還是utf8,當你確認編碼的,可以直接傳入編碼型別,比如

return

getquerystring(querystring, 

encoding.utf8

, true);

4.需要注意

querystring 

=querystring.replace("?

", "");把?給過濾掉。

我在自己開發中使用了上面大神的**,利用ajax向後後台傳的資料為data: $("form").serialize(),

序列化form的資料在後台用上面的**解析出form裡的資料。

好文要頂

關注我收藏該文

js獲取url引數值

今天碰到要在乙個頁面獲取另外乙個頁面url傳過來的引數,一開始很本能的想到了用 split 這樣一步步的分解出需要的引數。後來想了一下,肯定會有更加簡單的方法的!所以在網上找到了兩個很又簡單實用的方法,mark下 方法一 正則分析法 function getquerystring name 這樣呼叫...

URL引數值獲取getQueryString

目錄介紹 實現 講解 獲取正常情況下的url是這樣的 這樣的?a 1 還有這樣的?a 1 ab 2 abc 3 abcd 4 沒錯,基本是key value的形式 function getquerystring name return 其中 name 的意思就是取以name開頭或者以 開頭以 或者以...

js獲取url引數值

今天碰到要在乙個頁面獲取另外乙個頁面url傳過來的引數,一開始很本能的想到了用 split 這樣一步步的分解出需要的引數。後來想了一下,肯定會有更加簡單的方法的!所以在網上找到了兩個很又簡單實用的方法,mark下 方法一 正則分析法 function getquerystring name 這樣呼叫...