Instr函數 可以判斷一字符串中是否包含另一字符串。
也就是說將用戶對各個欄目的權限在後台以多項選則添加到數據庫中,我們知道這樣的提交asp是處理成一個逗號分割的字符串;
這樣登錄驗證成功後,將權限這個字段的字符串放到session中,然後就可以用Instr函數來判斷是否有對應權限的字符串,無則無權限。
代碼如下:
〈%
quanxian="學生,老師,主任,校長"
yonghu="老師"
response.write (InStr(quanxian,yonghu) & "<br />")
If (InStr(quanxian,yonghu)>0) Then
response.write yonghu
Else
response.write "權限不對"
End if
%〉
------InStr 函數 -------------------------------
返回某字符串在另一字符串中第一次出現的位置。
InStr([start, ]string1, string2[, compare])
start
可選項。用於設置每次搜索的開始位置。如果省略,將從第一個字符的位置開始搜索。如果 start 包含 NULL,則會出現錯誤。如果已指定 compare,則必須要有 start 參數。
string1
必選項。接受搜索的字符串表達式。
string2
必選項。要搜索的字符串表達式。
compare
可選項。指示在計算子字符串時使用的比較類型的數值。有關數值,請參閱“設置”部分。如果省略,將執行二進制比較。
compare 參數可以有以下值:
InStr 函數返回以下值:
注:使用instr函數時必須給兩個字符串加上雙引號。
多人認為InStr 和 InStrRev 的值是一樣的,覺得很奇怪。
比如 InStrRev("1234567cike.org","cike.org") 和 InStr("1234567cike.org","cike.org") 的值都是8
的確,在上面這個情況下,他們倆的值是一樣的,讓我們來仔細看看。
官方說明中 InStr 是返回某字符串在另一字符串中第一次出現的位置 。
還有另一個類似的函數叫 InStrRev,官方說明中是返回某字符串在另一個字符串中出現的從結尾計起的位置。
認為 InStrRev("1234567890abcde1234","abcde") 的值是 5,是從後往前數,其實這是錯誤的
正確的說明是, InStrRev 還是從左往右算位置,但是查找比較的時候是從尾部開始比較的(從右開始)
比如 InstrRev("123cike.org1234cike.org","cike.org") 的值是 16,因為存在兩個"abcde"
那麼 Instr("123cike.org1234cike.org","cike.org") 的值是 4
這下明白 Instr,InstrRev 的區別的了吧