亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

ASP 高級模板引擎實現類

2024-05-04 11:08:43
字體:
來源:轉載
供稿:網友
這個模板引擎比較方便,跟HTML結合了
 
 
 
復制代碼代碼如下:

Class template 

Private c_Char, c_Path, c_FileName, c_Content, c_PageUrl, c_CurrentPage, c_PageStr, ReplacePageStr 
Private TagName 

' *************************************** 
' 設置編碼 
' *************************************** 
Public Property Let Char(ByVal Str) 
c_Char = Str 
End Property 
Public Property Get Char 
Char = c_Char 
End Property 

' *************************************** 
' 設置模板文件夾路徑 
' *************************************** 
Public Property Let Path(ByVal Str) 
c_Path = Str 
End Property 
Public Property Get Path 
Path = c_Path 
End Property 

' *************************************** 
' 設置模板文件名 
' *************************************** 
Public Property Let FileName(ByVal Str) 
c_FileName = Str 
End Property 
Public Property Get FileName 
FileName = c_FileName 
End Property 

' *************************************** 
' 獲得模板文件具體路徑 
' *************************************** 
Public Property Get FilePath 
If Len(Path) > 0 Then Path = Replace(Path, "/", "/") 
If Right(Path, 1) <> "/" Then Path = Path & "/" 
FilePath = Path & FileName 
End Property 

' *************************************** 
' 設置分頁URL 
' *************************************** 
Public Property Let PageUrl(ByVal Str) 
c_PageUrl = Str 
End Property 
Public Property Get PageUrl 
PageUrl = c_PageUrl 
End Property 

' *************************************** 
' 設置分頁 當前頁 
' *************************************** 
Public Property Let CurrentPage(ByVal Str) 
c_CurrentPage = Str 
End Property 
Public Property Get CurrentPage 
CurrentPage = c_CurrentPage 
End Property 

' *************************************** 
' 輸出內容 
' *************************************** 
Public Property Get Flush 
Response.Write(c_Content) 
End Property 

' *************************************** 
' 類初始化 
' *************************************** 
Private Sub Class_Initialize 
TagName = "pjblog" 
c_Char = "UTF-8" 
ReplacePageStr = Array("", "") 
End Sub 

' *************************************** 
' 過濾沖突字符 
' *************************************** 
Private Function doQuote(ByVal Str) 
doQuote = Replace(Str, Chr(34), """) 
End Function 

' *************************************** 
' 類終結 
' *************************************** 
Private Sub Class_Terminate 
End Sub 

' *************************************** 
' 加載文件方法 
' *************************************** 
Private Function LoadFromFile(ByVal cPath) 
Dim obj 
Set obj = Server.CreateObject("ADODB.Stream") 
With obj 
.Type = 2 
.Mode = 3 
.Open 
.Charset = Char 
.Position = .Size 
.LoadFromFile Server.MapPath(cPath) 
LoadFromFile = .ReadText 
.close 
End With 
Set obj = Nothing 
End Function 

' *********************************************** 
' 獲取正則匹配對象 
' *********************************************** 
Public Function GetMatch(ByVal Str, ByVal Rex) 
Dim Reg, Mag 
Set Reg = New RegExp 
With Reg 
.IgnoreCase = True 
.Global = True 
.Pattern = Rex 
Set Mag = .Execute(Str) 
If Mag.Count > 0 Then 
Set GetMatch = Mag 
Else 
Set GetMatch = Server.CreateObject("Scripting.Dictionary") 
End If 
End With 
Set Reg = nothing 
End Function 

' *************************************** 
' 打開文檔 
' *************************************** 
Public Sub open 
c_Content = LoadFromFile(FilePath) 
End Sub 

' *************************************** 
' 緩沖執行 
' *************************************** 
Public Sub Buffer 
c_Content = GridView(c_Content) 
Call ExecuteFunction 
End Sub 

' *************************************** 
' GridView 
' *************************************** 
Private Function GridView(ByVal o_Content) 
Dim Matches, SubMatches, SubText 
Dim Attribute, Content 
Set Matches = GetMatch(o_Content, "/<" & TagName & "/:(/d+?)(.+?)/>([/s/S]+?)<//" & TagName & "/:/1/>") 
If Matches.Count > 0 Then 
For Each SubMatches In Matches 
Attribute = SubMatches.SubMatches(1) ' kocms 
Content = SubMatches.SubMatches(2) ' <Columns>...</Columns> 
SubText = Process(Attribute, Content) ' 返回所有過程執行后的結果 
o_Content = Replace(o_Content, SubMatches.value, "<" & SubText(2) & SubText(0) & ">" & SubText(1) & "</" & SubText(2) & ">", 1, -1, 1) ' 替換標簽變量 
Next 
End If 
Set Matches = Nothing 
If Len(ReplacePageStr(0)) > 0 Then ' 判斷是否標簽變量有值,如果有就替換掉. 
o_Content = Replace(o_Content, ReplacePageStr(0), ReplacePageStr(1), 1, -1, 1) 
ReplacePageStr = Array("", "") ' 替換后清空該數組變量 
End If 
GridView = o_Content 
End Function 

' *************************************** 
' 確定屬性 
' *************************************** 
Private Function Process(ByVal Attribute, ByVal Content) 
Dim Matches, SubMatches, Text 
Dim MatchTag, MatchContent 
Dim datasource, Name, Element, page, id 
datasource = "" : Name = "" : Element = "" : page = 0 : id = "" 
Set Matches = GetMatch(Attribute, "/s(.+?)/=/""(.+?)/""") 
If Matches.Count > 0 Then 
For Each SubMatches In Matches 
MatchTag = SubMatches.SubMatches(0) ' 取得屬性名 
MatchContent = SubMatches.SubMatches(1) ' 取得屬性值 
If Lcase(MatchTag) = "name" Then Name = MatchContent ' 取得name屬性值 
If Lcase(MatchTag) = "datasource" Then datasource = MatchContent' 取得datasource屬性值 
If Lcase(MatchTag) = "element" Then Element = MatchContent ' 取得element屬性值 
If Lcase(MatchTag) = "page" Then page = MatchContent ' 取得page屬性值 
If Lcase(MatchTag) = "id" Then id = MatchContent ' 取得id屬性值 
Next 
If Len(Name) > 0 And Len(MatchContent) > 0 Then 
Text = Analysis(datasource, Name, Content, page, id) ' 執行解析屬性 
If Len(datasource) > 0 Then Attribute = Replace(Attribute, "datasource=""" & datasource & """", "") 
If page > 0 Then Attribute = Replace(Attribute, "page=""" & page & """", "") 
Attribute = Replace(Attribute, "name=""" & Name & """", "", 1, -1, 1) 
Attribute = Replace(Attribute, "element=""" & Element & """", "", 1, -1, 1) 
Process = Array(Attribute, Text, Element) 
Else 
Process = Array(Attribute, "", "div") 
End If 
Else 
Process = Array(Attribute, "", "div") 
End If 
Set Matches = Nothing 
End Function 

' *************************************** 
' 解析 
' *************************************** 
Private Function Analysis(ByVal id, ByVal Name, ByVal Content, ByVal page, ByVal PageID) 
Dim Data 
Select Case Lcase(Name) ' 選擇數據源 
Case "loop" Data = DataBind(id, Content, page, PageID) 
Case "for" Data = DataFor(id, Content, page, PageID) 
End Select 
Analysis = Data 
End Function 

' *************************************** 
' 綁定數據源 
' *************************************** 
Private Function DataBind(ByVal id, ByVal Content, ByVal page, ByVal PageID) 
Dim Text, Matches, SubMatches, SubText 
Execute "Text = " & id & "(1)" ' 加載數據源 
Set Matches = GetMatch(Content, "/<Columns/>([/s/S]+)/<//Columns/>") 
If Matches.Count > 0 Then 
For Each SubMatches In Matches 
SubText = ItemTemplate(SubMatches.SubMatches(0), Text, page, PageID)' 執行模塊替換 
Content = Replace(Content, SubMatches.value, SubText, 1, -1, 1) 
Next 
DataBind = Content 
Else 
DataBind = "" 
End If 
Set Matches = Nothing 
End Function 

' *************************************** 
' 匹配模板實例 
' *************************************** 
Private Function ItemTemplate(ByVal TextTag, ByVal Text, ByVal page, ByVal PageID) 
Dim Matches, SubMatches, SubMatchText 
Dim SecMatch, SecSubMatch 
Dim i, TempText 
Dim TextLen, TextLeft, TextRight 
Set Matches = GetMatch(TextTag, "/<ItemTemplate/>([/s/S]+)/<//ItemTemplate/>") 
If Matches.Count > 0 Then 
For Each SubMatches In Matches 
SubMatchText = SubMatches.SubMatches(0) 
' --------------------------------------------- 
' 循環嵌套開始 
' --------------------------------------------- 
SubMatchText = GridView(SubMatchText) 
' --------------------------------------------- 
' 循環嵌套結束 
' --------------------------------------------- 
If UBound(Text, 1) = 0 Then 
TempText = "" 
Else 
TempText = "" 
' ----------------------------------------------- 
' 開始分頁 
' ----------------------------------------------- 
If Len(page) > 0 And page > 0 Then 
If Len(CurrentPage) = 0 Or CurrentPage = 0 Then CurrentPage = 1 
TextLen = UBound(Text, 2) 
TextLeft = (CurrentPage - 1) * page 
TextRight = CurrentPage * page - 1 
If TextLeft < 0 Then TextLeft = 0 
If TextRight > TextLen Then TextRight = TextLen 
c_PageStr = MultiPage(TextLen + 1, page, CurrentPage, PageUrl, "float:right", "", False) 

If Int(Len(c_PageStr)) > 0 Then 
ReplacePageStr = Array("<page:" & Trim(PageID) & "/>", c_PageStr) 
Else 
ReplacePageStr = Array("<page:" & Trim(PageID) & "/>", "") 
End If 
Else 
TextLeft = 0 
TextRight = UBound(Text, 2) 
End If 

For i = TextLeft To TextRight 
TempText = TempText & ItemReSec(i, SubMatchText, Text) ' 加載模板內容 
Next 
End If 
Next 
ItemTemplate = TempText 
Else 
ItemTemplate = "" 
End If 
Set Matches = Nothing 
End Function 

' *************************************** 
' 替換模板字符串 
' *************************************** 
Private Function ItemReSec(ByVal i, ByVal Text, ByVal Arrays) 
Dim Matches, SubMatches 
Set Matches = GetMatch(Text, "/$(/d+?)") 
If Matches.Count > 0 Then 
For Each SubMatches In Matches 
Text = Replace(Text, SubMatches.value, doQuote(Arrays(SubMatches.SubMatches(0), i)), 1, -1, 1) '執行替換 
Next 
ItemReSec = Text 
Else 
ItemReSec = "" 
End If 
Set Matches = Nothing 
End Function 

' *************************************** 
' 全局變量函數 
' *************************************** 
Private Sub ExecuteFunction 
Dim Matches, SubMatches, Text, ExeText 
Set Matches = GetMatch(c_Content, "/<function/:([0-9a-zA-Z_/.]*?)/((.*?)/""(.+?)/""(.*?)/)///>") 
If Matches.Count > 0 Then 
For Each SubMatches In Matches 
Text = SubMatches.SubMatches(0) & "(" & SubMatches.SubMatches(1) & """" & SubMatches.SubMatches(2) & """" & SubMatches.SubMatches(3) & ")" 
Execute "ExeText=" & Text 
c_Content = Replace(c_Content, SubMatches.value, ExeText, 1, -1, 1) 
Next 
End If 
Set Matches = Nothing 
End Sub 

' *************************************** 
' 普通替換全局標簽 
' *************************************** 
Public Property Let Sets(ByVal t, ByVal s) 
Dim SetMatch, Bstr, SetSubMatch 
Set SetMatch = GetMatch(c_Content, "(/<Set/:([0-9a-zA-Z_/.]*?)/(((.*?)" & t & "(.*?))?/)///>)") 
If SetMatch.Count > 0 Then 
For Each SetSubMatch In SetMatch 
Execute "Bstr = " & SetSubMatch.SubMatches(1) & "(" & SetSubMatch.SubMatches(3) & """" & s & """" & SetSubMatch.SubMatches(4) & ")" 
c_Content = Replace(c_Content, SetSubMatch.Value, Bstr, 1, -1, 1) 
Next 
End If 
Set SetMatch = Nothing 
Set SetMatch = GetMatch(c_Content, "(/<Set/:" & t & "///>)") 
If SetMatch.Count > 0 Then 
For Each SetSubMatch In SetMatch 
c_Content = Replace(c_Content, SetSubMatch.Value, s, 1, -1, 1) 
Next 
End If 
Set SetMatch = Nothing 
End Property 

End Class

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品视频在线观看网址| 欧美成人免费大片| 国产精品一区二区三区久久久| 97涩涩爰在线观看亚洲| 日韩精品在线免费观看| 欧美精品福利在线| 福利一区视频在线观看| 91精品国产成人| 成人激情av在线| 欧美激情视频在线免费观看 欧美视频免费一| 欧美黄网免费在线观看| 精品久久久中文| 日韩激情视频在线播放| 亚洲激情中文字幕| 欧美在线性爱视频| 欧美激情喷水视频| 午夜精品蜜臀一区二区三区免费| 中文字幕日韩在线视频| 国产精品视频男人的天堂| 亚洲欧美另类在线观看| 九九热99久久久国产盗摄| 日韩av综合中文字幕| 亚洲丝袜一区在线| 中日韩美女免费视频网站在线观看| 九九热精品视频在线播放| 国产精品久久婷婷六月丁香| 久久久久久久电影一区| 欧美日韩国产中字| 亚洲欧洲日韩国产| 亚洲欧洲日本专区| 亚洲自拍偷拍色图| 国产在线精品成人一区二区三区| 精品久久在线播放| 亚洲自拍偷拍网址| 91成人免费观看网站| 米奇精品一区二区三区在线观看| 亚洲成人黄色网| 国产女同一区二区| 国产精品国产三级国产aⅴ9色| 亚洲精品videossex少妇| 国产亚洲日本欧美韩国| 亚洲视频国产视频| 亚洲高清免费观看高清完整版| 韩国视频理论视频久久| 日韩欧美国产视频| 亚洲午夜国产成人av电影男同| 中文字幕在线观看亚洲| 亚洲国产91色在线| 久久久久久久香蕉网| 日韩性xxxx爱| 国产成人av网| 91成品人片a无限观看| 久久精品国产91精品亚洲| 国产一区玩具在线观看| 精品亚洲aⅴ在线观看| 日韩av网址在线| 亚洲区bt下载| 亚洲欧美中文字幕| 中文字幕精品一区二区精品| 国模gogo一区二区大胆私拍| 91av视频导航| 久久综合国产精品台湾中文娱乐网| 美日韩丰满少妇在线观看| 日本精品视频在线播放| 久久精品91久久香蕉加勒比| 亚洲欧美成人网| 国产精品视频一区国模私拍| 欧美一级视频一区二区| 久久精品99久久香蕉国产色戒| 国产亚洲美女精品久久久| 中文字幕不卡av| 亚洲视频欧美视频| 久久精品国亚洲| 欧美成人精品一区二区三区| 在线电影中文日韩| 青草青草久热精品视频在线观看| 欧美午夜视频一区二区| 日韩成人激情视频| 成人精品网站在线观看| 亚洲一区亚洲二区亚洲三区| 国内精品久久久久久久| 亚洲福利小视频| 成人性生交大片免费看小说| 亚洲丝袜一区在线| 亚洲欧美精品suv| 欧美日韩在线视频观看| 国产亚洲欧美一区| 国产精品成人播放| 国产在线精品自拍| 自拍偷拍亚洲在线| 亚洲天堂男人的天堂| 国产精品wwwwww| 中文字幕亚洲在线| 奇米一区二区三区四区久久| 国产一区视频在线播放| 国产欧美日韩丝袜精品一区| 欧美激情视频在线观看| 日本三级韩国三级久久| 日日狠狠久久偷偷四色综合免费| 国产精品小说在线| 欧美久久久精品| 日韩免费在线看| 欧美一级片免费在线| 成人免费看片视频| 亚洲午夜精品久久久久久久久久久久| 国产成人+综合亚洲+天堂| 日韩中文字幕网| 粉嫩老牛aⅴ一区二区三区| 538国产精品视频一区二区| 欧美黄网免费在线观看| 亚洲精品久久久久久久久| 精品久久中文字幕| 国产精品国产亚洲伊人久久| 国产剧情日韩欧美| 欧美另类极品videosbestfree| 国产亚洲视频在线| 美女撒尿一区二区三区| 亚洲精品成人av| 国产不卡av在线免费观看| 欧美激情第1页| 欧美一区二区三区图| 欧亚精品中文字幕| 亚洲欧美国产一本综合首页| 一区二区三区四区视频| 亚洲午夜女主播在线直播| 欧美性20hd另类| 精品丝袜一区二区三区| 一区二区欧美在线| 精品色蜜蜜精品视频在线观看| 欧美激情国产精品| 欧洲成人午夜免费大片| 欧美高清自拍一区| 久久99精品久久久久久琪琪| 日韩视频免费大全中文字幕| 欧美性猛交xxxx黑人| 国产欧美日韩免费看aⅴ视频| 中文字幕亚洲无线码a| 精品呦交小u女在线| 欧美视频第一页| 国产精品久久久久久久久影视| 这里只有视频精品| 日韩成人中文字幕在线观看| 国产日韩精品综合网站| 国产又爽又黄的激情精品视频| 奇米4444一区二区三区| 国产精品第100页| 久久久久久久久久国产精品| 欧美高清激情视频| 久久五月天色综合| 26uuu亚洲伊人春色| 亚洲伊人成综合成人网| 国产精品高清网站| 欧美乱大交做爰xxxⅹ性3| 中文字幕欧美精品日韩中文字幕| 国产精品亚洲综合天堂夜夜| 亚洲天堂av图片| 亚洲精品福利在线观看| 国产一区二区丝袜| 国产精品伦子伦免费视频| 亚洲天堂男人天堂| 国产精品第8页| 国产欧美一区二区三区久久| 亚洲欧洲在线视频| 成人免费网站在线观看|