账号通
    

账号  

密码  

15771

查看

57

回复
主题:可以在SQL标签的输出部分支持REPLACE,并且支持IF判断输出,8月5号更新 [收藏主题] 本贴被认定为精华 转到:  
ajianuo 当前离线

151

主题

0

广播

0

粉丝
添加关注
级别:一年级

用户积分:863 分
登录次数:270 次
注册时间:2011/11/3
最后登录:2014/1/2
ajianuo 发表于:2011/12/20 10:31:40   | 只看该作者 查看该作者主题 楼主 
做在线知识付费 选科汛云开店

让SQL标签支持REPLACE!

声名:如果你不会,请不要随便改动,如果出现一些问题,请自已负责,谢谢!

使用REPLACE标签的方法

{$REPLACE(aa||bb,,bbb|cc,,ccc)}    查找bb替换bbb,和查找cc替换ccc   支持多替换,中间用|分开,aa是字符串,注意,这些字符串都不需要添加双引号

例:{$REPLACE(我们去上街||我们,,我|上街,,逛街)}

输出结果是:我去逛街


打开KS_Cls\Kesion.Label.SQLCls.asp


查找

                    ReplaceCondition=TempStr
        End Function

在下面添加


'字符替换 {$REPLACE(aa||bb,,bbb|cc,,ccc)}查找bb替换bbb,和查找cc替换ccc   支持多替换,中间用|分开
  Function ReplaceCondition1(byval str)
   Dim regEx, Matches, Match, TempStr
   Dim FieldParam,FieldParamArr,ReturnFieldValue,FieldParamArr1,FieldParamArr2,k,re1,re2,re3
   re1="||"
   re2="|"
   re3=",,"

're1,re2,re3可以换自己喜欢的符号,不容易出冲突的符号
                    on error resume next
     Set regEx = New RegExp
     regEx.Pattern = "\{\$REPLACE\([^{\$}]*\)\}"
     regEx.IgnoreCase = True
     regEx.Global = True
     Set Matches = regEx.Execute(str)
     TempStr=str
     For Each Match In Matches
       FieldParam    = Replace(Replace(Match.Value,"{$REPLACE(",""),")}","")
       FieldParamArr = Split(FieldParam,re1)
       if instr(FieldParamArr(1),re2)=0 and instr(FieldParamArr(1),re3)>0 then
        FieldParamArr2=Split(FieldParamArr(1),re3)
        ReturnFieldValue=Replace(FieldParamArr(0),FieldParamArr2(0),FieldParamArr2(1))
       elseif instr(FieldParamArr(1),re2)>0 then
      ReturnFieldValue=Replace(Replace(Match.Value,"{$REPLACE(",""),")}","")
        FieldParamArr1 =Split(FieldParamArr(1),re2)
        for k=0 to Ubound(FieldParamArr1)
      if k=0 then ReturnFieldValue=FieldParamArr(0)
        FieldParamArr2=Split(FieldParamArr1(k),re3)
        ReturnFieldValue=Replace(ReturnFieldValue,FieldParamArr2(0),FieldParamArr2(1))
        next
       end if
       if err then
        err.clear
       else
          TempStr=Replace(TempStr,"{$REPLACE(" &FieldParam &")}",ReturnFieldValue)
       end if
     Next
              ReplaceCondition1=TempStr
  End Function


‘=============分界线================

查找     CleanLabel=ReplaceCondition(Replace(Content,"$KS:Page$",vbcrlf))

替换


CleanLabel=ReplaceCondition1(Replace(Content,"$KS:Page$",vbcrlf))

CleanLabel=ReplaceCondition(CleanLabel)


查找                 For i=0 to objNode.ChildNodes.length-1
                    set objAtr=objNode.ChildNodes.item(i)

根据下面的红字体进行添加


Str=Replace(Replace(Replace(Replace(Replace(Replace(objAtr.Attributes.item(2).Text,"{$Field","{#Field"),"{$AutoID}","{#AutoID}"),"{$IF","{#IF"),"{$Param","{#Param"),"{$GetItemUrl}","{#GetItemUrl}"),"{$REPLACE","{#REPLACE")
'避免Field字段被替换掉,先转为#


Str=Rcls.ReplaceGeneralLabelContent(Str)



Str=Replace(Replace(Replace(Replace(Replace(Str,"{#Field","{$Field"),"{#AutoID}","{$AutoID}"),"{#IF","{$IF"),"{#Param","{$Param"),"{#REPLACE","{$REPLACE")



红色为添加部分

====================================================

8.5发现个问题如下

{$REPLACE(我们有$10块||10,,20)}

如果内部有$就无法运行了。所以我们要调整一下,

查找

regEx.Pattern = "\{\$REPLACE\([^{\$}]*\)\}"
替换

regEx.Pattern = "\{\$REPLACE\([^{}]*\)\}"

我想IF里面如果也有这个符号,应该也会 出问题,修改方法和这个一样~!

"\{\$REPLACE\([^{}]*\)\}"这段可能不是最正确的,但能力有限,先用着。官方能提点一下那就最好不过了。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
科汛官方 当前离线

47268

主题

145

广播

405

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2011/12/20 12:06:37   | 只看该作者 查看该作者主题 沙发 
 
KesionCMS,,
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
huiacer095 当前离线

2628

主题

0

广播

1

粉丝
添加关注
级别:大一

用户积分:1711 分
登录次数:542 次
注册时间:2011/11/29
最后登录:2012/6/29
huiacer095 发表于:2011/12/20 12:14:33   | 只看该作者 查看该作者主题 藤椅 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
huiacer095 当前离线

2628

主题

0

广播

1

粉丝
添加关注
级别:大一

用户积分:1711 分
登录次数:542 次
注册时间:2011/11/29
最后登录:2012/6/29
huiacer095 发表于:2011/12/20 12:17:23   | 只看该作者 查看该作者主题 板凳 
科汛智能建站系统

很到位呢1  !  厉害 !
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
julie 当前离线

3161

主题

0

广播

0

粉丝
添加关注
级别:大二

用户积分:1686 分
登录次数:637 次
注册时间:2011/11/18
最后登录:2013/3/13
julie 发表于:2011/12/20 12:30:37   | 只看该作者 查看该作者主题 报纸 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
mt56 当前离线

4985

主题

53

广播

17

粉丝
添加关注
级别:版主

用户积分:23430 分
登录次数:1621 次
注册时间:2007/2/10
最后登录:2022/9/28
mt56 发表于:2011/12/20 12:47:33   | 只看该作者 查看该作者主题 地板 
科汛在线网校系统

用不到,也表感谢!

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
伊某某 当前离线

571

主题

0

广播

3

粉丝
添加关注
级别:五年级

用户积分:2896 分
登录次数:425 次
注册时间:2008/8/1
最后登录:2023/10/24
伊某某 发表于:2011/12/20 13:38:17   | 只看该作者 查看该作者主题 7楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
liuyanping 当前离线

232

主题

0

广播

0

粉丝
添加关注
级别:二年级

用户积分:170 分
登录次数:21 次
注册时间:2011/12/10
最后登录:2012/4/25
liuyanping 发表于:2011/12/20 14:01:30   | 只看该作者 查看该作者主题 8楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
952542130 当前离线

201

主题

0

广播

0

粉丝
添加关注
级别:一年级

用户积分:48 分
登录次数:29 次
注册时间:2011/12/12
最后登录:2012/7/10
952542130 发表于:2011/12/20 14:13:51   | 只看该作者 查看该作者主题 9楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
customhym 当前离线

2

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:2 分
登录次数:1 次
注册时间:2011/12/20
最后登录:2011/12/20
customhym 发表于:2011/12/20 14:36:44   | 只看该作者 查看该作者主题 10楼 
科汛在线商城系统(NET)
我现在都忘记了好多,写不出来了,看看复习一下!
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行1.92578秒 powered by KesionCMS 9.0