正则表达式问题--如何替换掉内容中的IMG变成有LINK的IMG呢?
代码如下:(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> </P></TD>
<TD width="50%">
<P align=center> </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> </P></TD>
<TD width="50%">
<P align=center> </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> </P></TD><TD width='50%'><P align=center> </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




