日期:2014-05-16  浏览次数:20977 次

请教这段代码为什么会吃掉其他代码?
某CMS,自己修改的一个模板,在后台上传一个文件后,出现的文件名应该是有超级链接的,在后台看也正常,但在前台这个超链接却不存在。经查,发现UBB代码里有一句:
s=re.replace(s,"<img src=$3 onclick=""javascript:window.open(this.src);"" style=""cursor:pointer;"" onload=""javascript:if(this.width>"&ssize&") this.style.width='"&ssize&"px';"" border=""0"" />")
这句代码会将图片后文件名的超级链接代码<a href="">这段代码吃掉,将上面那句注释掉就一切正常了。请教高手们这是怎么回事,有没有办法不注释掉那句也能正常?

------解决方案--------------------
你应该把正则给贴出来,你那个只是通过正则替换成那个了,所以是正则的问题,不是这个代码问题,这个只是把符合正则的字符串替换成,"<img src=$3 onclick=""javascript:window.open(this.src);"" style=""cursor:pointer;"" onload=""javascript:if(this.width>"&ssize&") this.style.width='"&ssize&"px';"" border=""0"" />")
而已
------解决方案--------------------
's=re.replace(s,"<img src=$3 onclick=""javascript:window.open(this.src);"" style=""cursor:pointer;"" onload=""javascript:if(this.width>"&ssize&") this.style.width='"&ssize&"px';"" border=""0"" />")

正则替换了

去掉这个你的页面就会有js漏洞
------解决方案--------------------
是不是将</a>这个一边的符号弄丢了。
------解决方案--------------------
re.Pattern="<img(.[^>]*)src(=
------解决方案--------------------
 =)(.[^ >]*)(.[^>]*)>"
's=re.replace(s,"<img src=$3 onclick=""javascript:window.open(this.src);"" style=""cursor:pointer;"" onload=""javascript:if(this.width>"&ssize&") this.style.width='"&ssize&"px';"" border=""0"" />")
光这个正则来看,并不会替换a标签的
我觉得是替换成这样以后再使用其他正则替换才把a标签替换掉了,并不是这里的问题