CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

正则表达式问题--如何替换掉内容中的IMG变成有LINK的IMG呢?

楼主miaomiaoga(喵喵嘉)2004-09-01 02:49:15 在 Web 开发 / ASP 提问

代码如下:(asp代码)  
  Set   re=new   RegExp  
          re.IgnoreCase   =true  
          re.Global=True  
          re.Pattern="\<IMG   src=\""(.[^\[]*)\""\>"  
   
          content   =   "...很多内容,包括<IMG   alt=xxxx   src=""http://www.localhost.net/demo/kc2/Upload/200472901633285.png""   onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333""   border=0>哈哈<BR>"  
   
  '其实content是从数据库里读出来的内容,内容太多,没办法全部截取,只写一部分在这里了  
          content   =   re.Replace(content,"<a   onfocus=this.blur()   href=""$1""   target=_blank><IMG   SRC=""$1""   border=0   alt=press   here></a>")  
   
          response.write   content  
   
  因为内容中有很多是图片,是原尺寸显示出来的,现在我想把里面的图片,加个链接,然后可以点图片就出新窗口显示该图片,因为不熟悉正则表达式,屡屡失败,只好在这里求救了。;(~  
   
  里面有一些是<img   src="xxx">,有一些却是<img   width=200   height=300   src="xxx">,反正<img>里内容各不相同,搞了一天搞不定,郁闷S了。请各位弟兄救救命了。:(~谢谢。  
  问题点数:100、回复次数:36Top

1 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 03:24:12 得分 33

content="<img   alt=""xxxx""   width=""300""   src=""c:\temp\pic\10.jpg""   height=""300""   border=0>"  
   
  Set   re=new   RegExp  
          re.IgnoreCase   =true  
          re.Global=True  
          re.Pattern="(<img.+?src=[""']?(.*?)[""'].*?\/?>)"  
   
  content=re.replace(content,"<a   onfocus=""window.event.srcElement.blur()""   href=""$2""   target=""_blank"">$1</a>")Top

2 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 03:32:53 得分 0

这样应该可以了Top

3 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 03:33:24 得分 0

content="<img   alt=""xxxx""   width=""300""   src=""10.jpg""   height=""300""   border=0>"  
   
  Set   re=new   RegExp  
          re.IgnoreCase   =true  
          re.Global=True  
          re.Pattern="(<img.+?src=[""']?(.*?)[""'].*?\/?>)"  
   
  content=re.replace(content,"<a   href=""$2""   target=""_blank""   onfocus=""this.blur()"">$1</a>")  
  response.write   contentTop

4 楼injeek(injeek)回复于 2004-09-01 03:35:58 得分 0

?Top

5 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 03:40:13 得分 0

我测试时数字开头的文件名打不开,可能是我iis的问题,你试试  
  客户端查看源代码是正确的Top

6 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 03:41:55 得分 0

高手!!!超级高手!俺等到半夜终于有人回了!但现在多出了一种情况,就是每幅图片都多了一个蓝框(是border=1那种,虽然里面看不到有这个属性),搞定这个就可以交货啦!哈哈哈~~~我再等~~~`等~~~~~Top

7 楼Estyle(靳田)回复于 2004-09-01 03:44:56 得分 33

看正则是最头大的!恰好正则是我众多弱项之一,呵呵!  
  http://community.csdn.net/Expert/topic/3327/3327999.xml  
  mjpclab的模式好象不周全,虽然考虑了src的位置,但没有考虑IMG提前结束的情况。Top

8 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 03:45:29 得分 0

两段代码都一样的效果。。。已经很感动了。。。呜呜。。。现在还差一个框。。。蓝框。。。我也不知道为什么会有蓝框弹出来的。。;(~Top

9 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 03:45:39 得分 0

改进一下,上面的不太好  
          re.Pattern="(<img[^>]+?   src=[\""\']?(.*?)[\""\'].*?\/?>)"Top

10 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 03:47:51 得分 0

Estyle(靳田)   兄你好,我试过你的代码,好像会出现数据杂乱的情况,:(~~~大猫猫的代码可以解决我的问题,但却总还有蓝框框。。:(~Top

11 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 03:48:30 得分 0

我用了新的PATTERN,还是不行。。:(~  
   
  (两位DX厉害啊。。那么晚还不睡。。不会像我一样在家做自由人吧。。。Top

12 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 03:52:02 得分 0

border=0应该是写在原来的content里的img里的,还有问题?把浏览器客户端的代码贴来看看,不是服务器端代码Top

13 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 03:53:15 得分 0

终于通读了《JavaScript权威指南》呵呵,每晚看累了就上会儿csdnTop

14 楼Estyle(靳田)回复于 2004-09-01 04:00:50 得分 0

我的代码提取src属性值,会引起数据混乱吗?  
  真是献丑了,呵呵。  
  希望你能将引起混乱的测试数据给我,我试试看。  
  ——我自己设计了几个测试数据,都没有问题,可能是没考虑周全吧。Top

15 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:02:26 得分 0

<TR>  
  <TD   width="50%"><a   onfocus="window.event.srcElement.blur()"   href="http://localhost/demo/konche2/UploadFiles/200471215034275.jpg"   target="_blank"><IMG   style="WIDTH:   265px;   HEIGHT:   239px"   height=248   src="http://localhost/demo/konche2/UploadFiles/200471215034275.jpg"   width=279></a></TD>  
  <TD   width="50%"><a   onfocus="window.event.srcElement.blur()"   href="http://localhost/demo/konche2/UploadFiles/200471215042413.jpg"   target="_blank"><IMG   style="WIDTH:   264px;   HEIGHT:   239px"   height=266   src="http://localhost/demo/konche2/UploadFiles/200471215042413.jpg"   width=298></a></TD>  
  <TR>  
  <TD   width="50%">  
  <P   align=center>&nbsp;</P></TD>  
  <TD   width="50%">  
  <P   align=center>&nbsp;</P></TD>  
  <TR>  
  <TD   width="50%"><a   onfocus="window.event.srcElement.blur()"   href="http://localhost/demo/konche2/UploadFiles/200471215057580.jpg"   target="_blank"><IMG   style="WIDTH:   265px;   HEIGHT:   253px"   height=253   src="http://localhost/demo/konche2/UploadFiles/200471215057580.jpg"   width=256></a></TD>  
  <TD   width="50%"><a   onfocus="window.event.srcElement.blur()"   href="http://localhost/demo/konche2/UploadFiles/20047121515153.jpg"   target="_blank"><IMG   style="WIDTH:   265px;   HEIGHT:   254px"   height=244   src="http://localhost/demo/konche2/UploadFiles/20047121515153.jpg"   width=255></a></TD>  
  <TR>  
  <TD   width="50%">Top

16 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:04:53 得分 0

To:     Estyle(靳田)兄,其实有可能不是你的代码有问题,也有可能是我的数据库里的内容有问题,因为程序不是我写的,所以我自己也没办法对它做什么处理,其实里面的内容是一个HTML编辑器里的内容,所以里面有很多什么TABLE啊,TD啊,IMG啊等等的东东,看得头都晕:(~~~至于为什么会数据出现混乱,我自己也不清楚,:(~~Top

17 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:06:27 得分 0

To:大猫猫:  
  我看过数据里的内容了,里面并没有BORDER=1这个属性,如果有,原来按正常尺寸显示出来也会有框框的,真奇怪了。:(~~是不是我浏览器有问题呢?。。。(自己加BORDER了?)。。。晕。。。不懂。。。Top

18 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 04:08:35 得分 0

我找到原因了,因为   if   this.width>screen.width  
  匹配掉了这个大于号,所以按照你的代码这么改  
   
          re.Pattern="(<img.+?src=[""']?(.*?)[""'].*?\/?>(?!screen))"  
   
  最后的screen说明不匹配">screen"   如果你用在其他代码上,就作相应更改  
   
  等着,解决了睡觉Top

19 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 04:15:27 得分 0

呵呵再修正  
          re.Pattern="(<img.+?src=[""']?(.*?)[""'].*?\/?>)(?!screen)"  
   
  上面的也可以用,但觉得这样更好些Top

20 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:16:15 得分 0

还是不行。  
  http://www.sz96.com/miaomiaoga/problem_1.jpg  
   
  这里是图片。你先去睡啊。。。我也去睡了。。。明早再来解决也不迟啊。。。明天干就是了。。。。:(~~对不起。。。让你久等了。。。Top

21 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:17:23 得分 0

re.Pattern="(<img.+?src=[""']?(.*?)[""'].*?\/?>(?!screen))"  
  和  
  re.Pattern="(<img.+?src=[""']?(.*?)[""'].*?\/?>)(?!screen)"  
   
  都试了。。。还是有。。。奇怪到晕了。。。:(~Top

22 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:21:50 得分 0

re.Pattern="(<img.+?src=[""']?(.*?)[""'].*?\/?>)(?!screen)"  
  miaomiao   =   rs("content")  
  miaomiao=re.replace(miaomiao,"<a   onfocus=""window.event.srcElement.blur()""   href=""$2""   target=""_blank"">$1</a>")  
  response.write   miaomiao  
   
  我现在这样用,对吗?Top

23 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 04:23:49 得分 0

还是把服务器端的<img   >贴全了让我看看,怎么会有width,你新增的吗  
  还有<a   onfocus           就用原来的this.blur()好了,我的方法兼容性不好,只能用IETop

24 楼Estyle(靳田)回复于 2004-09-01 04:26:51 得分 0

我也快睡了,明天8点还有课。  
  我又看了看代码,发现的确是自己没考虑好。  
  我仅仅是提取了src属性值(而且仍然不够周全),没有仔细分析你的要求,所以会出问题。  
  大猫猫考虑得比我多。  
  希望你早点解决问题。  
   
  不过我还是建议你注意双重A标签嵌套的问题,这样做不好。  
  至于蓝框,不加border=0则默认border=1!Top

25 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 04:29:02 得分 0

呵呵,你睡得真晚啊……Top

26 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:32:45 得分 0

服务器端代码:(其实也一样的东东)  
   
  <TABLE   borderColor=#000000   cellSpacing=2   cellPadding=2   width="98%"   bgColor=#ffffff   border=0>  
  <TBODY>  
  <TR>  
  <TD   width="50%"><IMG   style="WIDTH:   265px;   HEIGHT:   239px"   height=248   src="http://www.1st-cyber.net/demo/konche2/UploadFiles/200471215034275.jpg"   width=279></TD>  
  <TD   width="50%"><IMG   style="WIDTH:   264px;   HEIGHT:   239px"   height=266   src="http://www.1st-cyber.net/demo/konche2/UploadFiles/200471215042413.jpg"   width=298></TD>  
  <TR>  
  <TD   width="50%">  
  <P   align=center>&nbsp;</P></TD>  
  <TD   width="50%">  
  <P   align=center>&nbsp;</P></TD>  
  <TR>  
  <TD   width="50%"><IMG   style="WIDTH:   265px;   HEIGHT:   253px"   height=253   src="http://www.1st-cyber.net/demo/konche2/UploadFiles/200471215057580.jpg"   width=256></TD>  
  <TD   width="50%"><IMG   style="WIDTH:   265px;   HEIGHT:   254px"   height=244   src="http://www.1st-cyber.net/demo/konche2/UploadFiles/20047121515153.jpg"   width=255></TD>  
  <TR>  
   
   
  To:Estyle兄,哎,这些代码都不是我写的,更乱的代码还在里面的系统呢,真的被人气死了。;(~~~~先解决了这个问题再说了。。。Top

27 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:36:09 得分 0

To:大猫猫兄,你累就先睡啊,能做到这已经不简单了,先睡一觉也不迟啊~:(~~连累你了。。。  
   
  两位都加我QQ吧:413532,有空就研究研究软件~不过我已经很少写代码了~主要是不想写了~好累~~~:(~~~Top

28 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 04:37:38 得分 0

没有border=0这个东东啊,加一下看看  
  <IMG   style="WIDTH:   265px;   HEIGHT:   239px"   height=248   src="http://www.1st-cyber.net/demo/konche2/UploadFiles/200471215034275.jpg"   width=279   border=0>Top

29 楼Estyle(靳田)回复于 2004-09-01 04:42:45 得分 0

我测试了一下,好象很正常啊?  
  ——因为直接赋值,所以我把那部分HTML缩到了一行并且把双引号换成了单引号,但后面借鉴了大猫猫对引号的匹配,应该不会有问题。而且也没有篮框。  
  你再试试看?  
   
  <%  
  content="<TABLE   borderColor=#000000   cellSpacing=2   cellPadding=2   width='98%'   bgColor=#ffffff   border=0><TBODY><TR><TD   width='50%'><IMG   style='WIDTH:   265px;   HEIGHT:   239px'   height=248   src='http://www.1st-cyber.net/demo/konche2/UploadFiles/200471215034275.jpg'   width=279></TD><TD   width='50%'><IMG   style='WIDTH:   264px;   HEIGHT:   239px'   height=266   src='http://www.1st-cyber.net/demo/konche2/UploadFiles/200471215042413.jpg'   width=298></TD><TR><TD   width='50%'><P   align=center>&nbsp;</P></TD><TD   width='50%'><P   align=center>&nbsp;</P></TD><TR><TD   width='50%'><IMG   style='WIDTH:   265px;   HEIGHT:   253px'   height=253   src='http://www.1st-cyber.net/demo/konche2/UploadFiles/200471215057580.jpg'   width=256></TD><TD   width='50%'><IMG   style='WIDTH:   265px;   HEIGHT:   254px'   height=244   src='http://www.1st-cyber.net/demo/konche2/UploadFiles/20047121515153.jpg'   width=255></TD><TR></table>"  
   
  Set   re=new   RegExp  
          re.IgnoreCase   =true  
          re.Global=True  
          re.Pattern="<IMG[^>]*   src=[""']*([\S]*)[""']*[^>]*>"  
   
  content   =   re.Replace(content,"<a   onfocus=this.blur()   href=""$1""   target=_blank><IMG   SRC=""$1""   border=0   alt=press   here></a>")  
  response.write   content  
   
  %>Top

30 楼saucer(思归)回复于 2004-09-01 04:43:24 得分 33

try  
   
  <%  
      s   =   "<img   src=""http://www.csdn.net/images/csdn.gif"">"  
      s   =   s   &   "...很多内容,包括       <IMG   alt=xxxx   src=""http://www.localhost.net/demo/kc2/Upload/200472901633285.png""   onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333""   onerror=""javascript:alert('sxxx');""   border=0>哈哈<BR>"  
   
      set   re   =   new   RegExp  
      re.Global   =   true  
      re.IgnoreCase   =true  
          re.Pattern   =   "<(img[^>]+src\s*=\s*(""[^""]+""|'[^']+'|\S+)([^""'>]*(""[^""]*""|'[^']*'))*[^>]*)>"  
      s   =   re.Replace(s,"<a   href=$2   target='_blank'><$1   border=0></a>")  
      Response.Write(s)  
  %>  
  Top

31 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 04:46:45 得分 0

就是因为没有,在超级链接里,不加BORDER=0的话缺省就是显示边框的啊,estyle也提到了(至于蓝框,不加border=0则默认border=1!),加了就肯定没问题,但我数据库里面的内容是没有border=0,我不能要求客户在上传完图片后再人手加一段border=0的。:(~~~Top

32 楼Estyle(靳田)回复于 2004-09-01 04:48:07 得分 0

呵呵,saucer也登场了!给我们带来了更夸张(周全)的模式。  
  鼓掌!^_^Top

33 楼mjpclab(有只大猫猫 mjpclab.net)回复于 2004-09-01 04:50:59 得分 0

那就在网页<head>里加  
   
  <style   type="text/css">  
      img   {border:0px}  
  </style>  
   
  是在<%   %>   之外的  
   
  再不行,我晕  
  好像有人来接班了,问他们吧Top

34 楼Estyle(靳田)回复于 2004-09-01 04:54:18 得分 0

睡了,再不睡就垮塌了!  
  最后,希望大家去这里看看:  
  http://community.csdn.net/Expert/TopicView.asp?id=3328001  
  http://community.csdn.net/Expert/TopicView.asp?id=3327644  
  晚安。Top

35 楼miaomiaoga(喵喵嘉)回复于 2004-09-01 05:00:17 得分 0

天啊~~~终于可以啦!!!经过“Estyle(靳田)”兄的检查,经过“大猫猫”的调研,再经过  
  "saucer(思归/MVP)"的总结!终于可以啦!  
   
   
  但最后的问题是。。。这年头怎么都流行不睡觉?~~@_@...还是“思归”兄先起床了~~晕~``解决了。。。我也该去睡了。。。最后还是要谢谢三位。。。真的很感动。。。真的。。。半夜还有人来解决我的问题。。。再一次谢谢。。。^-^Top

36 楼mrshelly(Shelly)回复于 2004-09-01 08:02:10 得分 1

嗯。我晕~~~~~~~~~~~Top

相关问题

  • 将<IMG src="01.jpg">替换成<IMG src="01.jpg"/>的正则表达式怎么写
  • 关于正则表达式替换<img src="">的问题~~~~请高手帮忙
  • 求:替换img src="http://qq.asdc.com/asdf/asdf.gif"中域名为“/”的正则表达式
  • 求一正则表达式:替换img标签的src属性值(在线等)
  • 正则表达式替换的问题
  • 正则表达式多行替换
  • 正则表达式替换问题
  • 正则表达式的替换问题
  • 急:正则表达式替换
  • 请教一个正则表达式的字符替换问题:

关键词

  • .net
  • 代码
  • 内容
  • 数据
  • 属性
  • 数据库
  • 解决
  • 客户
  • estyle
  • re

得分解答快速导航

  • 帖主:miaomiaoga
  • mjpclab
  • Estyle
  • saucer
  • mrshelly

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo