注册 登录
编程论坛 ASP技术论坛

ASP自定义标签参数怎么实现替换

smh4037 发布于 2008-07-14 18:38, 2707 次点击
ASP自定义标签参数怎么实现替换??请高手指点
<%  
 Function RegReplace(Str,Pattern,StrReplace)
    Dim Reg
     Set Reg        = New RegExp
    Reg.IgnoreCase = True
    Reg.Global     = True
    Reg.Pattern    = Pattern
    'RegReplace     = Reg.Replace(Str,StrReplace)
    Set Matches = Reg.Execute(Str)
    For Each Match In Matches
           StrM = StrM & Match.Value & "|"
    Next
    StrM       = Replace(StrM,"#","")
    RegReplace = StrM
 End Function
 
 Str        = "dsfs#SMH_OK(1,3,4)#dsfsdsfs#SMHOK(1,3,4)#dsfsdsfs#SMH123(1,3,4)#dsfs<Font color=red>#SMH123(1,3,4)#</Font>"
 Pattern    = "#SMH[\w]+?\([\d\,]+?\)#"
 StrReplace = "<b>$1</b>"
 Response.Write RegReplace(Str,Pattern,StrReplace)
 
 Function SMH_OK(A,B,C)
 Str = A + B + C
 End Function
%>
13 回复
#2
multiple19022008-07-14 18:58
下面的代码是什么?
#3
smh40372008-07-14 20:22
Function SMH_OK(A,B,C)
SMH_OK = A + B + C
End Function
查找这样的函数..A,B,C分别代表形参..
然后用过滤把字符里面有这种标签的替换成自定义的函数....
然后返回结果...
#4
multiple19022008-07-14 20:33
我问的是,你给的代码是例程还是别的什么?
#5
smh40372008-07-14 20:34
是例程
#6
smh40372008-07-14 20:35
版主举个例子,,,我在上网找不到例子...
自己太笨了,,想不出来
#7
multiple19022008-07-14 21:07
我给你举个例子,动易公司的SiteWeaver系统,有源代码。

再举个例子,最近几天也是这个版面相同的问题我的回复。
#8
multiple19022008-07-14 21:08
https://bbs.bccn.net/viewthread.php?tid=223747

哦原来就是你问的,试试之后有什么心得?
#9
smh40372008-07-14 21:13
不知道自定义标签是怎么实现括号里的形参...
#10
smh40372008-07-14 21:47
终于知道怎么做了 ......
<%  
 Function RegReplace(Str,Pattern,StrReplace)
    Dim Reg
     Set Reg        = New RegExp
    Reg.IgnoreCase = True
    Reg.Global     = True
    Reg.Pattern    = Pattern
    'RegReplace     = Reg.Replace(Str,StrReplace)
    Set Matches = Reg.Execute(Str)
    For Each Match In Matches
           StrM = Replace(Match.Value,"#","")
           StrW = StrW & Eval(StrM) & "<P>"
    Next
    RegReplace = StrW
 End Function
 
 Str        = "dsfsdfsdfs#SMH_OK(2,3,6)#dsfsdsfs#sdf#SMH_OK_A(1,3,4)#sdfdsfds"
 Pattern    = "#SMH[\w]+?\([\d\,]+?\)#"
 StrReplace = "<b>$1</b>"

 Response.Write RegReplace(Str,Pattern,StrReplace)

 Function SMH_OK(A,B,C)
 SMH_OK   = A + B + C
 End Function
 
 Function SMH_OK_A(A,B,C)
 SMH_OK_A = A + B + C
 End Function
%>
#11
multiple19022008-07-14 21:55
对啦。

用Eval还要小心,因为完全可能执行未知的代码。
#12
smh40372008-07-14 21:58
和EXECUTE有何区别????
#13
multiple19022008-07-14 22:00
execute("response.write ""123""")
执行了一个语句

s=eval("123+456")
计算了一个表达式,并且有返回值
#14
smh40372008-07-14 22:04
原来如此...刚刚一直用Execute
1