分享
 
 
 

ASP通用函数库

王朝学院·作者佚名  2009-06-05
窄屏简体版  字體: |||超大  

程序代码

<%

'******************************

'类名:

'名称:通用库

'日期:2008/10/28

'作者:by xilou

'网址:http://www.chinacms.org

'描述:通用库

'版权:转载请注名出处,作者

'******************************

'最后修改:20090108

'修改次数:2

'修改说明:

'20090108 增加下列函数:

' A2U(),U2A(),UrlEncode(),UrlDecode(),GBToUTF8(),Bytes2Str(),Str2Bytes()

'20090108 增加下列函数:

' AryToVbsString(arr)

'目前版本:

'******************************/

'输出

Sub Echo(str)

Response.Write str

End Sub

'断点

Sub Halt()

Response.End()

End Sub

'输出并换行

Sub Br(str)

Echo str & "<br />" & vbcrlf

End Sub

'简化Request.Form()

'f : 表单名称

Function P(f)

P = Replace(Request.Form(f), Chr(0), "")

End Function

'接收表单并替换单引号

Function Pr(f)

Pr = Replace(Request.Form(f), Chr(0), "")

Pr = Replace(Pr, "'", "''")

End Function

'简化Request.Querystring()

'f : 表单名称

Function G(f)

G = Replace(Request.QueryString(f), Chr(0), "")

End Function

'接收url参数并替换单引号

Function Gr(f)

Gr = Replace(Request.QueryString(f), Chr(0), "")

Gr = Replace(Gr, "'", "''")

End Function

'//构造()?:三目运算 by xilou www.chinacms.org

'ifThen为true返回s1,为false返回s2

Function IfThen(ifTrue, s1, s2)

Dim t

If ifTrue Then

t = s1

Else

t = s2

End If

IfThen = t

End Function

'显示不同颜色的是和否

Function IfThenFont(ifTrue, s1, s2)

Dim str

If ifTrue Then

str = "<font color=""#006600"">" & s1 & "</font>"

Else

str = "<font color=""#FF0000"">" & s2 & "</font>"

End If

IfThenFont = str

End Function

'创建Dictionary对象

Function NewHashTable()

Set NewHashTable = Server.CreateObj("Scripting.Dictionary")

NewHashTable.CompareMode = 1 '键值不区分大小写

End Function

'创建XmlHttp

Function NewXmlHttp()

Set NewXmlHttp = Server.createobject("MSXML2.XMLHTTP")

End Function

'创建XmlDom

Function NewXmlDom()

End Function

'创建AdoStream

Function NewAdoStream()

Set NewAdoStream = Server.CreateObject("Adodb.Stream")

End Function

'创建一个1维数组

'返回n个元素的空数组

'n : 元素个数

Function NewArray(n)

Dim ary : ary = array()

ReDim ary(n-1)

NewArray = ary

End Function

'构造Try..Catch

Sub Try()

On Error Resume Next

End Sub

'构造Try..Catch

'msg : 抛出的错误信息,如果为空则抛出Err.Description

Sub Catch(msg)

Dim html

html = "<ul><li>$1</li></ul>"

If Err Then

If msg <> "" Then

echo Replace(html, "$1", msg)

Halt

Else

echo Replace(html, "$1", Err.Description)

Halt

End If

Err.Clear

Response.End()

End If

End Sub

'--------------------------------数组操作开始

'判断数组中是否存在某个值

Function InArray(arr, s)

If Not IsArray(arr) Then InArray = False : Exit Function

Dim i

For i = LBound(arr) To UBound(arr)

If s = arr(i) Then InArray = True : Exit Function

Next

InArray = False

End Function

'用ary数组中的值分别替换str中的占位符

'返回替换后的字符串

'str:要替换的字符串,占位符分别为$0,$1,$2...

'ary:用来替换的数组,每个值分别对应占位符中的$0,$1,$2...

'如:ReplaceByAry("$0-$1-$2 $3:$4:$5",Array(y,m,d,h,i,s))

Function ReplaceByAry(str,ary)

Dim i, j, L1, L2 : j = 0

If IsArray(ary) Then

L1 = LBound(ary) : L2 = UBound(ary)

For i = L1 To L2

str = Replace(str, "$"&j, ary(i))

j = j+1

Next

End If

ReplaceByAry = str

End Function

'--------------------------------数组操作结束

'--------------------------------随机数操作开始

'获取随机数

'm-n的随机数字

Function RndNumber(m,n)

Randomize

RndNumber = Int((n - m + 1) * Rnd + m)

End Function

'获取随机字符串

'n : 产生的长度

Function RndText(n)

Dim str1, str2, i, x, L

str1 = "NOPQRSTUVWXYZ012ABCDEFGHIJKLM3456abcdefghijklm789nopqrstuvwxyz"

L = Len(str1)

Randomize

For i = 1 To n

x = Int((L - 1 + 1) * Rnd + 1)

str2 = str2 & Mid(str1,x,1)

Next

RndText = str2

End Function

'从字符串str中产生m至n个的随机字符串

'如果str为空则默认从数字和字母中产生随机字符串

'str : 要从该字符串中产生随机字符串

'm,n : 产生n到m位

Function RndByText(str, m, n)

Dim i, k, str2, L, x

If str = "" Then str = "NOPQRSTUVWXYZ012ABCDEFGHIJKLM3456abcdefghijklm789nopqrstuvwxyz"

L = Len(str)

If n = m Then

k = n

Else

Randomize

k = Int((n - m + 1) * Rnd + m)

End If

Randomize

For i = 1 To k

x = Int((L - 1 + 1) * Rnd + 1)

str2 = str2 & Mid(str, x, 1)

Next

RndByText = str2

End Function

'日期时间组成随机数

'返回当前时间的数字组合

Function RndByDateTime()

Dim dt : dt = Now()

RndByDateTime = Year(dt) & Month(dt) & Day(dt) & Hour(dt) & Minute(dt) & Second(dt)

End Function

'--------------------------------随机数操作结束

'--------------------------------字符串操作开始

'判断一字符串str2在另一个字符串str1中出现的次数

'返回次数,没有则返回0

'str1 :接受搜索的字符串表达式

'str2 :要搜索的字符串表达式

'start:要搜索的开始位置,为空表示默认从1开始搜索

Function InStrTimes(str1, str2, start)

Dim a,c

If start = "" Then start = 1

c = 0

a = InStr(start, str1, str2)

Do While a > 0

c = c + 1

a = InStr(a+1, str1, str2)

Loop

InStrTimes = c

End Function

'字符串连接

'无返回

'strResult : 连接后保存的字符

'str : 要连接的字符

'partition : 连接字符间的分割符号

Sub JoinStr(byref strResult,str,partition)

If strResult <> "" Then

strResult = strResult & partition & str

Else

strResult = str

End If

End Sub

'计算字符串的字节长度,一个汉字=2字节

Function StrLen(str)

If isNull(str) or Str = "" Then

StrLen = 0

Exit Function

End If

Dim WINNT_CHINESE

WINNT_CHINESE = (len("例子")=2)

If WINNT_CHINESE Then

Dim l,t,c

Dim i

l = len(str)

t = l

For i = 1 To l

c = asc(mid(str,i,1))

If c<0 Then c = c + 65536

If c>255 Then t = t + 1

Next

StrLen = t

Else

StrLen = len(str)

End If

End Function

'截取字符串

' str : 要截取的字符串

' strlen : 要截取的长度

' addStr : 超过长度的用这个代替,如:...

Function CutStr(str, strlen, addStr)

Dim i,l, t, c

If Is_Empty(str) Then CutStr = "" : Exit Function

l = len(str) : t = 0

For i = 1 To l

c = Abs(Asc(Mid(str,i,1)))

If c > 255 Then

t = t+2

Else

t = t+1

End If

If t > strlen Then

CutStr = left(str, i) & addStr

Exit For

Else

CutStr = str

End If

Next

End Function

'全角转换成半角

Function SBCcaseConvert(str)

Dim b, c, i

b = "1,2,3,4,5,6,7,8,9,0," _

&"A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"

c = "1,2,3,4,5,6,7,8,9,0," _

&"A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"

b = split(b,",")

c = split(c,",")

For i = 0 To Ubound(b)

If instr(str,b(i)) > 0 Then

str = Replace(str, b(i), c(i))

End If

Next

SBCcaseConvert = str

End Function

'与javascript中的escape()等效

Function VbsEscape(str)

dim i,s,c,a

s = ""

For i=1 to Len(str)

c = Mid(str,i,1)

a = ASCW(c)

If (a>=48 and a<=57) or (a>=65 and a<=90) or (a>=97 and a<=122) Then

s = s & c

ElseIf InStr("@*_+-./",c) > 0 Then

s = s & c

ElseIf a>0 and a<16 Then

s = s & "%0" & Hex(a)

ElseIf a>=16 and a<256 Then

s = s & "%" & Hex(a)

Else

s = s & "%u" & Hex(a)

End If

Next

VbsEscape = s

End Function

'对javascript中使用escape()编码过的数据进行解码,ajax调用时用

Function VbsUnEscape(str)

Dim x

x = InStr(str,"%")

Do While x > 0

VbsUnEscape = VbsUnEscape & Mid(str,1,x-1)

If LCase(Mid(str,x+1,1)) = "u" Then

VbsUnEscape = VbsUnEscape & ChrW(CLng("&H"&Mid(str,x+2,4)))

str = Mid(str,x+6)

Else

VbsUnEscape = VbsUnEscape & Chr(CLng("&H"&Mid(str,x+1,2)))

str = Mid(str,x+3)

End If

x = InStr(str,"%")

Loop

VbsUnEscape = VbsUnEscape & str

End Function

'将ascii字符转为unicode编码形式

Function A2U(str)

Dim i,L,uText

L = Len(str)

For i = 1 To L

uText = uText & "&#" & AscW(Mid(str,i,1)) & ";"

Next

A2U = uText

End Function

'将unicode编码转为ascii

'str : 要转码的字符串,必须全部都是unicode字符,否则会出错

Function U2A(str)

Dim ary,i,L,newStr

ary = Split(str,";")

L = UBound(ary)

For i = 0 To L - 1

newStr = newStr & ChrW(Replace(ary(i),"&#",""))

Next

U2A = newStr

End Function

'url编码

Function UrlEncode(str)

UrlEncode = Server.UrlEncode(str)

End Function

'url解码

Function UrlDecode(str)

Dim newstr, havechar, lastchar, i, char_c, next_1_c, next_1_Num

newstr = ""

havechar = false

lastchar = ""

For i = 1 To Len(str)

char_c = Mid(str,i,1)

If char_c = "+" Then

newstr = newstr & " "

ElseIf char_c = "%" Then

next_1_c = Mid(str, i+1, 2)

next_1_num = Cint("&H" & next_1_c)

If havechar Then

havechar = false

newstr = newstr & Chr(CInt("&H" & lastchar & next_1_c))

Else

If Abs(next_1_num) <= 127 Then

newstr = newstr & Chr(next_1_num)

Else

havechar = true

lastchar = next_1_c

End If

End If

i = i + 2

Else

newstr = newstr & char_c

End If

Next

UrlDecode = newstr

End Function

'GB转UTF8--将GB编码文字转换为UTF8编码文字

Function GBToUTF8(gbStr)

Dim wch, uch, szRet,szInput

Dim x

Dim nAsc, nAsc2, nAsc3

szInput = gbStr

'如果输入参数为空,则退出函数

If szInput = "" Then

toUTF8 = szInput

Exit Function

End If

'开始转换

For x = 1 To Len(szInput)

'利用mid函数分拆GB编码文字

wch = Mid(szInput, x, 1)

'利用ascW函数返回每一个GB编码文字的Unicode字符代码

'注:asc函数返回的是ANSI 字符代码,注意区别

nAsc = AscW(wch)

If nAsc < 0 Then nAsc = nAsc + 65536

If (nAsc And &HFF80) = 0 Then

szRet = szRet & wch

Else

If (nAsc And &HF000) = 0 Then

uch = "%" & Hex(((nAsc \ 2 ^ 6)) or &HC0) & Hex(nAsc And &H3F or &H80)

szRet = szRet & uch

Else

'GB编码文字的Unicode字符代码在0800 - FFFF之间采用三字节模版

uch = "%" & Hex((nAsc \ 2 ^ 12) or &HE0) & "%" & _

Hex((nAsc \ 2 ^ 6) And &H3F or &H80) & "%" & _

Hex(nAsc And &H3F or &H80)

szRet = szRet & uch

End If

End If

Next

GBToUTF8 = szRet

End Function

'Byte流到Char流的转换

Function Bytes2Str(vin,charset)

Dim ms,strRet

Set ms = Server.CreateObject("ADODB.Stream") '建立流对象

ms.Type = 1 ' Binary

ms.Open

ms.Write vin '把vin写入流对象中

ms.Position = 0 '设置流对象的起始位置是0 以设置Charset属性

ms.Type = 2 'Text

ms.Charset = charset '设置流对象的编码方式为 charset

strRet = ms.ReadText '取字符流

ms.close '关闭流对象

Set ms = nothing

Bytes2Str = strRet

End Function

'Char流到Byte流的转换

Function Str2Bytes(str,charset)

Dim ms,strRet

Set ms = CreateObject("ADODB.Stream") '建立流对象

ms.Type = 2 ' Text

ms.Charset = charset '设置流对象的编码方式为 charset

ms.Open

ms.WriteText str '把str写入流对象中

ms.Position = 0 '设置流对象的起始位置是0 以设置Charset属性

ms.Type = 1 'Binary

vout = ms.Read(ms.Size) '取字符流

ms.close '关闭流对象

Set ms = nothing

Str2Bytes = vout

End Function

'--------------------------------字符串操作结束

'--------------------------------时间日期操作开始

'根据年份和月份获得相应的月份天数

'返回天数

'y : 年份,如:2008

'm : 月份,如:3

Function GetDayCount(y,m)

Dim c

Select Case m

Case 1, 3, 5, 7, 8, 10, 12

c=31

Case 2

If IsDate(y&"-"&m&"-"&"29") Then

c = 29

Else

c = 28

End If

Case Else

c = 30

End Select

GetDayCount = c

End Function

'判断一个日期时间是否在某段时间之间,包括比较的两头时间

Function IsBetweenTime(fromTime,toTime,strTime)

If DateDiff("s",fromTime,strTime) >= 0 And DateDiff("s",toTime,strTime) <= 0 Then

IsBetweenTime = True

Else

IsBetweenTime = False

End If

End Function

'--------------------------------时间日期操作结束

'--------------------------------安全加密相关操作开始

'--------------------------------安全加密相关操作结束

'--------------------------------数据合法性验证操作开始

'通过正则检测字符串,返回true|false

Function RegExpTest(strPatrn,strText)

Dim objRegExp, matches

Set objRegExp = New RegExp

objRegExp.Pattern = strPatrn

objRegExp.IgnoreCase = False

objRegExp.Global = True

RegExpTest = objRegExp.Test(strText)

'Set matches = objRegExp.Execute(strText)

Set objRegExp = nothing

End Function

'是否是正整数

Function IsPint(str)

IsPint = RegExpTest("^[1-9]{1}\d*$", str)

End Function

'是否是0或正整数

Function IsInt(str)

IsInt = RegExpTest("^0|([1-9]{1}\d*)$", str)

End Function

'Email

Function IsEmail(str)

Dim patrn

patrn = "^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"

IsEmail = RegExpTest(patrn,str)

End Function

'手机

Function IsMobile(str)

Dim patrn

patrn = "^(130|131|132|133|153|134|135|136|137|138|139|158|159){1}\d{8}$"

IsMobile = RegExpTest(patrn,str)

End Function

'QQ

Function IsQQ(str)

Dim patrn

patrn = "^[1-9]\d{4,8}$"

IsQQ = RegExpTest(patrn,str)

End Function

'身份证

Function IsIdCard(e)

Dim arrVerifyCode,Wi,Checker

arrVerifyCode = Split("1,0,x,9,8,7,6,5,4,3,2", ",")

Wi = Split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2", ",")

Checker = Split("1,9,8,7,6,5,4,3,2,1,1", ",")

If Len(e) < 15 or Len(e) = 16 or Len(e) = 17 or Len(e) > 18 Then

IsIdCard = False

Exit Function

End If

Dim Ai

If Len(e) = 18 Then

Ai = Mid(e, 1, 17)

ElseIf Len(e) = 15 Then

Ai = e

Ai = Left(Ai, 6) & "19" & Mid(Ai, 7, 9)

End If

If Not IsNumeric(Ai) Then

IsIdCard= False

Exit Function

End If

Dim strYear, strMonth, strDay, BirthDay

strYear = CInt(Mid(Ai, 7, 4))

strMonth = CInt(Mid(Ai, 11, 2))

strDay = CInt(Mid(Ai, 13, 2))

BirthDay = Trim(strYear) + "-" + Trim(strMonth) + "-" + Trim(strDay)

If IsDate(BirthDay) Then

If DateDiff("yyyy",Now,BirthDay)<-140 or cdate(BirthDay)>date() Then

IsIdCard= False

Exit Function

End If

If strMonth > 12 or strDay > 31 Then

IsIdCard= False

Exit Function

End If

Else

IsIdCard= False

Exit Function

End If

Dim i, TotalmulAiWi

For i = 0 To 16

TotalmulAiWi = TotalmulAiWi + CInt(Mid(Ai, i + 1, 1)) * Wi(i)

Next

Dim modValue

modValue = TotalmulAiWi Mod 11

Dim strVerifyCode

strVerifyCode = arrVerifyCode(modValue)

Ai = Ai & strVerifyCode

IsIdCard = Ai

If Len(e) = 18 And e <> Ai Then

IsIdCard= False

Exit Function

End If

IsIdCard=True

End Function

'邮政编码

Function IsZipCode(str)

Dim patrn

patrn = "^[1-9]\d{2,5}$"

IsZipCode = RegExpTest(patrn,str)

End Function

'是否为空,包括IsEmpty(),IsNull(),""的功能

Function Is_Empty(str)

If IsNull(str) or IsEmpty(str) or str="" Then

Is_Empty=True

Else

Is_Empty=False

End If

End Function

'--------------------------------数据合法性验证操作结束

'--------------------------------文件操作开始

'获取文件后缀,如jpg

Function GetFileExt(f)

GetFileExt = Lcase(Mid(f,InStrRev(f,".") + 1))

End Function

'生成文件夹

'path : 要生成的文件夹路径,用相对路径

Sub CFolder(path)

Dim fso

Set fso = Server.CreateObject("Scripting.FileSystemObject")

If Not fso.FolderExists(path) Then

fso.CreateFolder(path)

End If

Set fso = Nothing

End Sub

'删除文件夹

'path : 文件夹路径,用相对路径

Sub DFolder(path)

Dim fso

Set fso = Server.CreateObject("Scripting.FileSystemObject")

If fso.FolderExists(path) Then

fso.DeleteFolder path,true

Else

echo "路径不存在:" & path

End If

Set fso = Nothing

End Sub

'生成文件

'path : 生成文件路径,包括名称

'strText: 文件内容

Sub CFile(path,strText)

Dim f,fso

Set fso = Server.CreateObject("Scripting.FileSystemObject")

Set f = fso.CreateTextFile(path)

f.Write strText

Set f = Nothing

Set fso = Nothing

End Sub

'删除文件

'path : 文件路径,包括名称

Sub DFile(path)

Dim fso

Set fso = Server.CreateObject("Scripting.FileSystemObject")

If fso.FileExists(path) Then

Fso.DeleteFile(path)

End If

Set fso = Nothing

End Sub

'采集

Function GetHTTPPage(url)

' Http.setTimeouts 10000,10000,10000,10000

'On Error Resume Next

Dim Http

Set Http = Server.createobject("MSXML2.XMLHTTP")

Http.open "GET",url,false

Http.send()

If Http.Status <> 200 Then

Exit Function

End If

'If Err Then Response.Write url : Response.End()

GetHTTPPage = bytesToBSTR(Http.ResponseBody,"GB2312")

'Http.Close()

'if err.number<>0 then err.Clear

End Function

'编码转换

Function BytesToBstr(body,Cset)

Dim StreamObj

Set StreamObj = Server.CreateObject("Adodb.Stream")

StreamObj.Type = 1

StreamObj.Mode = 3

StreamObj.Open

StreamObj.Write body

StreamObj.Position = 0

StreamObj.Type = 2

StreamObj.Charset = Cset

BytesToBstr = StreamObj.ReadText

StreamObj.Close

End Function

'--------------------------------文件操作结束

'--------------------------------其他操作开始

'显示信息

'message : 要显示的信息

'url : 要跳转的URL

'typeNum : 显示方式,1弹出信息,回退到上一页;2弹出信息,转到url处

Sub ShowMsg(message,url,typeNum)

message = replace(message,"'","\'")

Select Case TypeNum

Case 1

echo ("<script language=javascript>alert('" & message & "');history.go(-1)</script>")

Case 2

echo ("<script language=javascript>alert('" & message & "');location='" & Url &"'</script>")

End Select

End Sub

'显示option列表并定位,by xilou www.chinacms.org

'textArr : 文本数组

'valueArr : 值数组

'curValue : 当前选定值

Function ShowOpList(textArr, valueArr, curValue)

Dim str, style, i

style = "style=""background-color:#FFCCCC"""

str = ""

If IsNull(curValue) Then curValue = ""

For I = LBound(textArr) To UBound(valueArr)

If Cstr(valueArr(I)) = Cstr(curValue) Then

str = str&"<option value="""&valueArr(I)&""" selected=""selected"" "&style&" >"&textArr(I)&"</option>"&vbcrlf

Else

str = str&"<option value="""&valueArr(I)&""" >"&textArr(I)&"</option>"&vbcrlf

End If

Next

ShowOpList = str

End Function

'多选列表

'注意:要使用到InArray()函数

'textArr : 文本数组

'valueArr : 值数组

'curValue : 当前选定值数组

Function ShowMultiOpList(textArr,valueArr,curValueArr)

Dim style, str, isCurr, I

style = "style=""background-color:#FFCCCC"""

str = "" : isCurr = False

If IsNull(curValue) Then curValue = ""

For I = LBound(textArr) To UBound(valueArr)

If InArray(curValueArr, valueArr(I)) Then

str = str&"<option value="""&valueArr(I)&""" selected=""selected"" "&style&" >"&textArr(I)&"</option>"&vbcrlf

Else

str = str&"<option value="""&valueArr(I)&""" >"&textArr(I)&"</option>"&vbcrlf

End If

Next

ShowMultiOpList = str

End Function

Function GetIP()

Dim strIPAddr,actforip

If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" or InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then

strIPAddr = Request.ServerVariables("REMOTE_ADDR")

ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then

strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)

ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then

strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)

Else

strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

End If

GetIP = strIPAddr

End Function

'将数组转化为dictionary对象存储

'hashObj : dictionary对象

'ary : 数组,格式必须为以下两种之一,第一种只能存储字符串值

' : array("Id:12","UserName:xilou","Sex:1"),即array("key:value",...)格式

' : array(array("Id","12"),array("UserName","xilou"),array("Sex","1"))

'返回dictionary对象

'www.chinacms.org

Sub AryAddToHashTable(ByRef hashObj,ary)

Dim str,ht,i,k,v,pos

For i = 0 To UBound(ary)

If IsArray(ary(i)) Then

If IsObject(ary(i)(0)) Then

Response.Write "Error:AryToHashTable(ary),键值不可以是一个对象类型,"

Response.Write "当前ary("& i &")(0)值类型为:" & TypeName(ary(i)(0))

Response.End()

End If

If IsObject(ary(i)(1)) Then '如果值是一个对象

Set hashObj(ary(i)(0)) = ary(i)(1)

Else

hashObj(ary(i)(0)) = ary(i)(1)

End If

Else

str = ary(i) & ""

pos = InStr(str,":")

'www.chinacms.org

If pos < 1 Then

Response.Write "Error:AryToHashTable(ary),"":""不存在"

Response.Write ",发生在:" & ary(i)

Response.End()

End If

If pos = 1 Then

Response.Write "Error:AryToHashTable(ary),键值不存在"

Response.Write ",发生在:" & ary(i)

Response.End()

End If

k = Left(str,pos-1)

v = Mid(str,pos+1)

hashObj(k) = v

End If

Next

End Sub

'将数组转化为dictionary对象存储

'ary : 数组,格式必须为以下两种之一,第一种只能存储字符串值

' : array("Id:12","UserName:xilou","Sex:1"),即array("key:value",...)格式

' : array(array("Id","12"),array("UserName","xilou"),array("Sex","1"))

'返回dictionary对象

Function AryToHashTable(ary)

Dim str,ht,i,k,v,pos

Set ht = Server.CreateObject("Scripting.Dictionary")

ht.CompareMode = 1

AryAddToHashTable ht , ary

Set AryToHashTable = ht

End Function

'将array转为字符串,相当于序列化array,只可允许的格式为:

'array("p1:v1","p2:v2",array("p3",true))

'返回字符串

Function AryToVbsString(arr)

Dim str,i,c

If Not IsArray(arr) Then Response.Write "Error:AryToString(arr)错误,参数arr不是数组"

c = UBound(arr)

For i = 0 To c

If IsArray(arr(i)) Then

Select Case LCase(TypeName(arr(i)(1)))

Case "date","string","empty"

str = str & ",array(""" & arr(i)(0) & ""","""& arr(i)(1) &""")"

Case "integer","long","single","double","currency","decimal","boolean"

str = str & ",array(""" & arr(i)(0) & ""","& arr(i)(1) &")"

Case "null"

str = str & ",array(""" & arr(i)(0) & """,null)"

Case Else

Response.Write "Error:AryToVbsString(arr),参数包含非法数据,索引i="&i&",键值为:"&arr(i)(0)

Response.End()

End Select

Else

str = str & ",""" & arr(i) & """"

End If

Next

If str <> "" Then str = Mid(str, 2, Len(str) - 1)

str = "array(" & str & ")"

AryToVbsString = str

End Function

'--------------------------------其他操作结束

%>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有