asp的标签引擎类tagEngine.Class

修改记录:

1,增加扩展函数,2006-12-3


<%
'******************************
'类名:tagEngine
'名称:标签引擎
'日期:2006-11-29
'作者:西楼冷月
'网址:www.xilou.net | www.chinaCMS.org
'描述:只有提取标签功能,没有解析标签功能
'版权:转载请注名出处,作者
'******************************
'最后修改:2006-12-3
'修改次数:3
'修改说明:修改正则,使匹配更精确
'目前版本:v1.1.3
'******************************
Class tagEngine
Private regEx'正则对象
'定义标签规则
Private tagbegin
Private tagend
Private blockbegin_begin
Private blockbegin_end
Private blockend_begin
Private blockend_end
'//初始化
Private Sub Class_Initialize()
'初始化标签规则
tagbegin="{"
tagend="}"
blockbegin_begin="<Block:"
blockbegin_end =">"
blockend_begin ="</Block:"
blockend_end =">"
'初始化正则对象
Set regEx=new RegExp
regEx.IgnoreCase=True'不区分大小写
regEx.Global=True'全局匹配
End Sub
Private Sub Class_Terminate()
'释放对象
If IsObject(regEx) Then Set regEx=Nothing
End Sub
'方法:resetPattern()
'参数:
'返回:无返回值
'作用:重设标签规则
Public Sub resetPattern(tagbegin,tagend,_
blockbegin_begin,_
blockbegin_end,_
blockend_begin,_
blockend_end _
)
tagbegin=tagbegin
tagend=tagend
blockbegin_begin=blockbegin_begin
blockbegin_end =blockbegin_end
blockend_begin =blockend_begin
blockend_end =blockend_end
End Sub
'方法:getBlocks(temp,blockname)
'参数:temp,要匹配的内容;blockname,区块标志名称
'返回:返回集合对象(Matches)
'作用:获取块标签集合
Public Function getBlocks(temp,blockname)
Dim pattern
pattern="("&blockbegin_begin&"[ ]*"&blockname&"\b[\w\W]*?"&blockbegin_end
pattern=pattern&")([\w\W]*?)"&blockend_begin&"[ \n\r]*"&blockname&"[ ]*"&blockend_end
'Response.Write pattern
regEx.Pattern=pattern
Set getBlocks=regEx.Execute(temp)'返回匹配集合
End Function
'方法:getBlockByAtt(temp,attributename,attributevalue)
'参数:temp,要匹配的内容;attributename,属性名称;attributevalue,属性值
'返回:返回集合对象(Matches)
'作用:根据块标签里的某个属性的值取得符合的块集合
Public Function getBlockByAtt(temp,attributename,attributevalue)
Dim pattern
pattern="("&blockbegin_begin&"[\w\W]*?[ \n\r]+"&attributename
pattern=pattern&"[ ]*=[ ]*\"&Chr(34)&attributevalue&"\"&Chr(34)&"[ \n\r]*[\w\W]*?"
pattern=pattern&blockbegin_end
pattern=pattern&")([\w\W]*?)"&blockend_begin&"[\w\W]*?"&blockend_end
'Response.Write pattern
regEx.Pattern=pattern
Set getBlockByAtt=regEx.Execute(temp)'返回匹配集合
End Function
'方法:getAttValue(temp,attributename)
'参数:temp,要匹配的内容;attributename,属性名称
'返回:返回集合对象(Matches)
'作用:获取块标签内的属性值
Public Function getAttValue(temp,attributename)
Dim pattern
pattern="[ \n\r]+"&attributename&"[ ]*=[ ]*\"&Chr(34)&"([^\f\n\r\t\v\"&Chr(34)&"]*?)\"&Chr(34)
'Response.Write pattern
regEx.Pattern=pattern
Set getAttValue=regEx.Execute(temp)
End Function
'方法:parseTag(temp,tagname,tagvalue)
'参数:temp,要匹配的内容;attributename,属性名称;attributevalue,属性值
'返回:返回替换后的字符串
'作用:替换简单标签
Public Function parseTag(temp,tagname,tagvalue)
Dim pattern
'pattern=tagbegin&"[ ]*"&tagname&"[ ]*"&tagend
pattern=tagbegin&tagname&tagend
regEx.pattern=pattern
parseTag=regEx.Replace(temp,tagvalue)
End Function
'方法:clearBlocks(temp)
'参数:temp,要匹配的内容
'返回:返回清除后的字符串
'作用:清除所有块标签
Public Function clearBlocks(temp)
Dim pattern
pattern=blockbegin_begin&"[\w\W]*?"&blockbegin_end&"[\w\W]*?"
pattern=pattern&blockend_begin&"[\w\W]*?"&blockend_end
regEx.pattern=pattern
clearBlocks=regEx.Replace(temp,"")
End Function
'方法:clearTags(temp)
'参数:temp,要匹配的内容
'返回:返回清除后的字符串
'作用:清除所有的单标签
Public Function clearTags(temp)
Dim pattern
pattern=tagbegin&"[^\f\n\r\t\v]*?"&tagend
regEx.pattern=pattern
clearTags=regEx.Replace(temp,"")
End Function
'方法:showError(errdes)
'参数:errdes,错误描述
'返回:无
'作用:显示错误
Public Sub showError(errdes)
Dim errinfo,cssstyle
cssstyle="style="&Chr(34)
cssstyle=cssstyle&"font:bold 12px 150%,'Arial';border:1px solid #CC3366;"
cssstyle=cssstyle&"width:50%;color:#990066;padding:2px;"&Chr(34)
errinfo=vbcrlf&"<ul "&cssstyle&"><li>"&errdes&"</li></ul>"&vbcrlf
Response.Write errinfo
End Sub
'******************标准功能结束****************
'以下是自定义扩展功能
'方法:EXT_getSimpleBlocks(temp,blockname)
'参数:temp,要匹配的内容;blockname,区块标志名称
'返回:返回集合对象(Matches)
'作用:获取简单块标签集合
'例子:<Block:new id="" loop=""/>
Public Function EXT_getSimpleBlocks(temp,blockname)
Dim pattern
Dim blockbegin,blockend
'重新定义标签规则
blockbegin="<Block:"
blockend ="/>"
pattern=blockbegin&"[ ]*"&blockname&"\b[\w\W]*?"&blockend
regEx.pattern=pattern
Set EXT_getSimpleBlocks=regEx.Execute(temp)
End Function
'******************标准功能结束****************
'以下是自定义扩展功能
'方法:EXT_getSimpleBlocks(temp,blockname)
'参数:temp,要匹配的内容;blockname,区块标志名称
'返回:返回集合对象(Matches)
'作用:获取简单块标签集合
'例子:<Block:new id="" loop=""/>
Public Function EXT_getSimpleBlocks(temp,blockname)
Dim pattern
Dim blockbegin,blockend
'重新定义标签规则
blockbegin="<Block:"
blockend ="/>"
pattern=blockbegin&"[ ]*"&blockname&"\b[\w\W]*?"&blockend
regEx.pattern=pattern
Set EXT_getSimpleBlocks=regEx.Execute(temp)
End Function
'方法:EXT_getTEXT(path)
'参数:path,要读取的文本相对或绝对路径
'返回:返回文本内容
'作用: 读取文件
'例子:c=EXT_getTEXT("tpl.htm")
Public Function EXT_getTEXT(path)
Dim fso,f,text
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set f=Fso.OpenTextFile(path)
text=f.ReadAll
If Err Then
Err.Clear
showError "读取文件出错..."
If IsObject(fso) Then Set fso=Nothing
Exit Function
End If
If IsObject(fso) Then Set fso=Nothing
EXT_getTEXT=text
End Function
'方法:EXT_getIncludeFile(temp)
'参数:temp,要匹配的内容
'返回:返回集合对象(Matches)
'作用: 解析<!--#include file="tpl.html"-->的区块
'例子:EXT_getIncludeFile(temp)(0).SubMatches(0),返回第一个匹配的文件名
Public Function EXT_getIncludeFile(temp)
Dim pattern
Dim blockbegin,blockend
'重新定义标签规则
blockbegin="<!--#include"
blockend ="-->"
pattern=blockbegin&"[ ]*file[ ]*=[ ]*\""([\w\W]*?)\""[ ]*"&blockend
regEx.pattern=pattern
Set EXT_getIncludeFile=regEx.Execute(temp)
End Function
End Class
%>

时间: 2024-08-19 11:08:06

asp的标签引擎类tagEngine.Class的相关文章

asp.net模板引擎Razor调用外部方法用法实例_实用技巧

本文实例讲述了asp.net模板引擎Razor调用外部方法用法.分享给大家供大家参考.具体如下: 首先使用Razor的步骤:读取cshtml.解析cshtml同时指定cacheName. 而这个步骤是重复的,为了遵循DRY原则,将这段代码封装为一个RazorHelper()方法 public class RazorHelper { public static string ParseRazor(HttpContext context, string csHtmlVirtualPath, obje

asp分页的一个类

分页 asp分页的一个类, 在50,000条记录下测试过,速度比ado的那个要快多了 <% '************************************************************************************'具体用法'Set conn=Server.CreateObject("ADODB.Connection")'conn.open "DRIVER={SQL Server};SERVER=(local);UID=s

ASP中的Debug类(VBScript)

debug|vbscript 不知道用ASP写代码的朋友是不是和我有一样的感受,ASP中最头疼的就是调试程序的时候不方便,我想可能很多朋友都会用这样的方法"response.write ",然后输出相关的语句来看看是否正确.前几天写了一个千行的页面,里面大概有七八个SUB/FUNCTION,调试的时候用了有三十几个response.write ,天,调试完后把这三十个一个个删除,累! 今天看到一个ASP中的Debug类(VBS),试用了一下,绝! 使用方法很简单: test.asp &

在asp中通过vbs类实现rsa加密与解密,建议入精华

加密|解密|精华 在asp中通过vbs类实现rsa加密与解密,建议入精华 本文章有两文件组成 test.asp 测试演示文件 clsrsa.asp 实现rsa加密与解密的vbs类文件下面是代码: 1. test.asp <%rem 文章标题:在asp中通过vbs类实现rsa加密与解密rem 收集整理:yanekrem 联系:aspboy@263.net %><%Option Explicit%><!--#INCLUDE FILE="clsRSA.asp"-

在asp中通过vbs类实现rsa加密与解密

加密|解密 本文章有两文件组成test.asp 测试演示文件clsrsa.asp 实现rsa加密与解密的vbs类文件下面是代码: 1. test.asp <%rem 文章标题:在asp中通过vbs类实现rsa加密与解密rem 收集整理:yanekrem 联系:aspboy@263.net %><%Option Explicit%><!--#INCLUDE FILE="clsRSA.asp"--><% Dim LngKeyEDim LngKeyD

ASP.NET缓存处理类实例

 本文实例讲述了ASP.NET缓存处理类.分享给大家供大家参考.具体如下: ASP.NET 缓存处理类. 用法: Just copy this code into a new class file (.cs) and add it to your ASP .NET website. One thing to keep in mind is that data stored in ASP .NET Cache can be accessible across all sessions. So wh

a标签伪类的作用及书写顺序是什么

a标签的伪类只不过是又结合了不同的动作顺序,动作的触发顺序决定了伪类的顺序必须按lvha来写,接下来为大家详细介绍下,感兴趣的朋友不妨参考下 a标签伪类的作用: ":link": a标签还未被访问的状态; ":visited": a标签已被访问过的状态; ":hover": 鼠标悬停在a标签上的状态; ":active": a标签被鼠标按着时的状态; 写样式时,为毛要按这个顺序写: 其实本质还是"同等优先权的样式,写

tomcat-访问含有自定义标签的jsp文件,出现错误提示:标签处理类不能解析为类型

问题描述 访问含有自定义标签的jsp文件,出现错误提示:标签处理类不能解析为类型 1.该文件使用tomcat 发布 2.标签处理类已经过编译,没有错误,并且放到了WEB-INF/classes下面 我的思考:已经提示处理类can't be resolved,说明tld文件设置没有问题,路径也都正确,那请问,有什么原因会出现这样的情况? 解决方案 确定下web.xml中是否定义了该自定义标签

asp网页标签的修改。。。

问题描述 asp网页标签的修改... 页面标签修改title值没有用 整个网站都没有搜索到页面标签的名字 请问在哪里修改啊 解决方案 ASP.NET 去除网页的html标签 解决方案二: 客户端源代码有title标签没有,有那就是你不会找.如果客户端源代码没有,那么自己增加title标签 解决方案三: 自己添加最好,方便很多