繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> 客户端相关 >> 在ASP中使用类

在ASP中使用类

2006-06-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:  VBScript5中增加了许多新功能,最振奋人心的当属类和正则表达式的出现。以下是本人写的一个解析html代码的类。我是 学php的,语法有不习惯的地方,请大家多包含。 0 Then '如果发现匹配元素 Parse = Parse ...
关键字:ASP

  VBScript5中增加了许多新功能,最振奋人心的当属类和正则表达式的出现。以下是本人写的一个解析html代码的类。我是

学php的,语法有不习惯的地方,请大家多包含。

<%

Class HTMLParse

' 设置 Initialize 事件。

Private Sub Class_Initialize

myGlobal = True

myIgnoreCase = True

End Sub

Property Let Global(g)

Dim regEx ' 建立变量。

Set regEx = New RegExp ' 建立正则表达式。

regEx.Pattern = "True|False|1|0" ' 设置模式。

regEx.IgnoreCase = True ' 设置是否区分大小写。

If regEx.Test(CStr(g)) Then

myGlobal = g

Else

Call Halt("无效Global参数配置")

End If

End Property

Property Get Global()

Global = myGlobal

End Property

Property Let IgnoreCase(c)

Dim regEx

Set regEx = New RegExp

regEx.Pattern = "True|False|1|0"

regEx.IgnoreCase = True

If regEx.Test(CStr(c)) Then

myIgnoreCase = c

Else

Call Halt("无效IgnoreCase参数配置")

End If

End Property

Property Get IgnoreCase()

IgnoreCase = myIgnoreCase

End Property

'解析所有HTML标记的函数

Public Function Parse(input)

Parse = "" & vbCrLf

Dim regEx , regVal , match , i

Set regEx = New RegExp

regEx.Pattern = "<([a-z]\w*)(?:.*?)>(.*)<\/\1>"

regEx.Global = myGlobal

regEx.IgnoreCase = myIgnoreCase

Set regVal = regEx.Execute(Trim(input))

If regVal.Count > 0 Then '如果发现匹配元素

Parse = Parse & "

" & vbCrLf

Parse = Parse & "

" & vbCrLf

For i=0 To regVal.Count-1

Set match = regVal(i)

Parse = Parse & "

" & vbCrLf

Parse = Parse & "

" & vbCrLf

Parse = Parse & "

" & vbCrLf

Next

Else Parse = Parse & "

" & vbCrLf

End If

Parse = Parse & "

发现" & regVal.Count & "个HTML标记
编号匹配标记匹配显示
" & i+1 & "" & match.SubMatches(0) & "" & match

& "

没有发现HTML标记
" & vbCrLf

End Function

'解析指定HTML标记的函数

Public Function ParseTag(input,tag)

ParseTag = "" & vbCrLf

Dim regEx , regVal , match , i

Set regEx = New RegExp

regEx.Pattern = "<(" & tag & ")(?:.*?)>(.*?)<\/\1>"

regEx.Global = myGlobal

regEx.IgnoreCase = myIgnoreCase

Set regVal = regEx.Execute(Trim(input))

If regVal.Count > 0 Then '如果发现匹配元素

ParseTag = ParseTag & "

" &

vbCrLf

ParseTag = ParseTag & "

" &

vbCrLf

For i=0 To regVal.Count-1

Set match = regVal(i)

ParseTag = ParseTag & "

" & vbCrLf

ParseTag = ParseTag & "

" & vbCrLf

ParseTag = ParseTag & "

" & vbCrLf

Next

Else ParseTag = ParseTag & "

" & vbCrLf

End If

ParseTag = ParseTag & "

发现" & regVal.Count & "个" & UCase(tag) & "标记
编号发现位置包含内容
" & i+1 & "" & match.FirstIndex & "" &

match.SubMatches(1) & "

没有发现" & UCase(tag) & "标记
" & vbCrLf

End Function

'打印错误

Private Sub Halt(errstr)

Response.Write("" & errstr & "" & vbCrLf)

Call Class_Terminate

End Sub

Private Sub Class_Terminate ' 设置 Terminate 事件。

End Sub

'定义两个内部变量

Private myGlobal

Private myIgnoreCase

End Class

%>

范例1

<%

'范例1

Dim input , result

input = "这是一个VBScript正则表达式范例。"

Set hp = New HTMLParse

hp.Global = 1

hp.IgnoreCase = False

result = hp.Parse(input)

Response.Write(result)

%>


范例2

<%

'范例2

'hp.Global = 1

'hp.IgnoreCase = False

result2 = hp.ParseTag(input,"i")

Response.Write(result2)

Set hp = Nothing

%>

大家应该注意到了,VBScript的正则表达式和Jscript的解析是一样的,只是语法不同。关于最新的VBScript的文档,大家

可以到微软中国的脚本技术主页去下载,网址:http://www.microsoft.com/china/scripting

责任编辑:admin
相关文章