日期:2014-05-17  浏览次数:20906 次

随机显示UBB
想写个随机显示的函数,当用户输入:[rndtxt]内容1|内容2|内容3[/rndtxt],结果是随机显示其中一个内容。关键代码如下,现在的问题是加了代码后没反应,原样输出。
VBScript code
    if instr(1,strContent,"[/rndtxt]",1)>0 then
        re.Pattern="(\[rndtxt\])(.[^\[]*)(\[\/rndtxt\])"
        myarray=split("$2","|")
        strContent=re.Replace(strContent,myarray(int(rnd()*ubound)+1))
    end if



------解决方案--------------------
VBScript code
Randomize 

s="~[rndtxt]内容1|内容2|内容3[/rndtxt]~afefefe~[rndtxt]内容4|内容5|内容6[/rndtxt]~[rndtxt]内容1|内容2|内容3[/rndtxt]"
set rx=new regexp
rx.ignorecase=true
rx.global=true
rx.pattern="\[rndtxt\]([\s\S]+?)\[/rndtxt\]"
set mc=rx.execute(s)
for each m in mc
  arr=split(m.submatches(0),"|")
  s=replace(s,m.value,arr(int(rnd()*ubound(arr))),1,1)'正则替换没有只执行一次的替换,所以改为replace方法
next

set rx=nothing

response.write s