smh4037 发布留言 2008-7-14 18:38
ASP自定义标签参数怎么实现替换
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
#SMH123(1,3,4)#"
Pattern = "#SMH[\w]+?\([\d\,]+?\)#"
StrReplace = "
$1"
Response.Write RegReplace(Str,Pattern,StrReplace)
Function SMH_OK(A,B,C)
Str = A + B + C
End Function
%>
multiple1902 发布留言 2008-7-14 18:58
下面的代码是什么?
smh4037 发布留言 2008-7-14 20:22
Function SMH_OK(A,B,C)
SMH_OK = A + B + C
End Function
查找这样的函数..A,B,C分别代表形参..
然后用过滤把字符里面有这种标签的替换成自定义的函数....
然后返回结果...
multiple1902 发布留言 2008-7-14 20:33
我问的是,你给的代码是例程还是别的什么?
smh4037 发布留言 2008-7-14 20:34
[tk01] 是例程
smh4037 发布留言 2008-7-14 20:35
版主举个例子,,,我在上网找不到例子...
自己太笨了,,想不出来
multiple1902 发布留言 2008-7-14 21:07
我给你举个例子,动易公司的SiteWeaver系统,有源代码。
再举个例子,最近几天也是这个版面相同的问题我的回复。
multiple1902 发布留言 2008-7-14 21:08
http://bbs.bccn.net/viewthread.php?tid=223747
哦原来就是你问的,试试之后有什么心得?
smh4037 发布留言 2008-7-14 21:13
[tk13] 不知道自定义标签是怎么实现括号里的形参...
smh4037 发布留言 2008-7-14 21:47
终于知道怎么做了[tk05] ......
<%
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) & "
"
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 = "$1"
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
%>
multiple1902 发布留言 2008-7-14 21:55
对啦。
用Eval还要小心,因为完全可能执行未知的代码。
smh4037 发布留言 2008-7-14 21:58
和EXECUTE有何区别????
multiple1902 发布留言 2008-7-14 22:00
execute("response.write ""123""")
执行了一个语句
s=eval("123+456")
计算了一个表达式,并且有返回值
smh4037 发布留言 2008-7-14 22:04
[tk13] 原来如此...刚刚一直用Execute
页: [1]