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

如何用正则过滤指定的html的代码?

楼主longsky(长空)2004-12-02 15:48:19 在 .NET技术 / C# 提问

比如以下代码   
  <A   onfocusfocus=this.blur()   href='http://...../4_394.jpg'   target=_blank><IMG   alt=''   src='http://......./4_394.jpg'   border=0   ='javascript:if(this.width>screen.width-333)this.width=screen.width-333'   dypop='按此在新窗口浏览图片'>    
   
  如何利用正则过滤成只有基本html代码的<img   src='http://......./4_394.jpg'   border=0>  
   
  请知道的朋友提供参考代码或者正则的电子书可下载地址  
  感谢回贴的朋友!  
  问题点数:80、回复次数:20Top

1 楼xzq686(★_瞬_★)回复于 2004-12-02 15:53:25 得分 0

到GOOGLE上一找就一大堆。。  
  http://blog.csdn.net/laily/archive/2004/06/24/25872.aspxTop

2 楼landlordh(work wonders)回复于 2004-12-02 15:56:51 得分 2

试下这个  
  <IMG.*>Top

3 楼wangxt(海贝)回复于 2004-12-02 16:02:58 得分 0

帮你顶Top

4 楼xzq686(★_瞬_★)回复于 2004-12-02 16:16:30 得分 5

"<img   src=([^<])*>"Top

5 楼longsky(长空)回复于 2004-12-02 19:22:38 得分 0

能不能给出一个具体化如何转换的语句呢?Top

6 楼xiaoslong(龙哥)回复于 2004-12-02 19:38:08 得分 0

帮你顶Top

7 楼longsky(长空)回复于 2004-12-02 22:02:44 得分 0

landlordh(software)   和   xzq686(瞬)   两位兄弟的方法不行啊,没有完成这个转换。Top

8 楼wzt226(猪想吃草!)回复于 2004-12-02 22:44:36 得分 0

接分Top

9 楼xianle_xianle(仙乐)回复于 2004-12-02 22:45:22 得分 0

没太看懂。Top

10 楼longsky(长空)回复于 2004-12-02 22:54:11 得分 0

问题就是这样的:  
  把img   图像链接中 带有onclick等javascript事件之类的杂项去掉,只留下最基本的属性。  
   
  如这一段:  
  <IMG   alt=''   src='http://......./4_394.jpg'   border=0     onclick='javascript:if(this.width>screen.width-333)this.width=screen.width-333'   dypop='按此在新窗口浏览图片'>    
   
  经过正则表达式过滤过后,应变成<IMG   alt=''   src='http://......./4_394.jpg'   border=0>  
   
  现在就是求这个 正则表达式如何写Top

11 楼iamknight(侠客)回复于 2004-12-02 23:20:32 得分 2

"<img   [^<]*>"  
  Top

12 楼abm1971(四环素)回复于 2004-12-02 23:36:18 得分 1

http://\S+.\S+   出自ASP.net揭秘Top

13 楼longsky(长空)回复于 2004-12-02 23:56:59 得分 0

imgstring="img     src=\"http://bbs.youhow.net/non-cgi/usr/4/4_394.jpg\"   onclick=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\"   border=0   dypop=\"按此在新窗口浏览图片\">";  
   
  imgstring=System.Text.RegularExpressions.Regex.Replace(imgstring,@"<img   [^<]*>","");  
   
  是这样吗?  
  imgstring="<img     src=\"http://bbs.youhow.net/non-cgi/usr/4/4_394.jpg\"   border=0>   
  得不到这样的值啊  
  Top

14 楼saucer(思归)回复于 2004-12-03 02:16:28 得分 70

try   something   like  
   
   
  string   s   =   "<IMG   alt=''   src='http://......./4_394.jpg'   border=0     onclick='javascript:if(this.width>screen.width-333)this.width=screen.width-333'   dypop='按此在新窗口浏览图片'>";  
   
   
      s   =   Regex.Replace(s,@"<IMG\s+(((?<alt>alt=\S+)|(?<src>src=\S+)|(?<border>border=\S+)|\S*)\s*)*[^>]*>",   "<IMG   ${alt}   ${src}   ${border}>",   RegexOptions.IgnoreCase);  
       
  or  
   
  s   =   Regex.Replace(s,@"<IMG\s+(((?<alt>alt=('[^']*'|""[^""]*""|\S*))|(?<src>src=('[^']*'|""[^""]*""|\S*))|(?<border>border=('[^']*'|""[^""]*""|\S*))|\S*)\s*)*[^>]*>",   "<IMG   ${alt}   ${src}   ${border}>",   RegexOptions.IgnoreCase);  
     
      Console.WriteLine(s);Top

15 楼mobydick(敌伯威|我排著队拿著爱的号码牌)回复于 2004-12-03 08:56:00 得分 0

老大,你的正则式太复杂了,估计他看不懂。呵呵。Top

16 楼longsky(长空)回复于 2004-12-03 09:30:04 得分 0

我确实看不懂。  
  思归老大:感谢你的帮助!不过刚才测试了一下,你的方法能让单个的<img   >很完美的过滤掉其它杂项,可是只能过滤第一个啊,假如还有第二个<img   .....>之类的,就会把后边的都给去掉了,要怎么改一下啊?Top

17 楼saucer(思归)回复于 2004-12-03 10:06:33 得分 0

string   s   =   "<IMG   alt=\"\"   src='http://......./4_39422.jpg'   style=\"xxx:\"   onclick='javascript:if(this.width>screen.width-333)this.width=screen.width-333'   border=0><IMG   alt='x'   src='http://......./4_394.jpgx'   border=012     onclick='javascript:if(this.width>screen.width-333)this.width=screen.width-333'   dypop='按此在新窗口浏览图片234'>";  
   
   
  s   =   Regex.Replace(s,@"<IMG\s+(((?<alt>alt=('[^']*'|""[^""]*""|[^\s>]*))|(?<src>src=('[^']*'|""[^""]*""|[^\s>]*))|(?<border>border=('[^']*'|""[^""]*""|[^\s>]*))|(?<others>[^=<>]+=('[^']*'|""[^""]*""|[^\s>]*)))\s*)*[^>]*>",   "<IMG   ${alt}   ${src}   ${border}>",   RegexOptions.IgnoreCase);  
   
    Console.WriteLine(s);  
  Top

18 楼yypeng(www.517yn.net 生如夏花之绚烂 逝如秋叶之静)回复于 2004-12-03 10:16:01 得分 0

up  
   
  ----------  
  www.517yn.netTop

19 楼xianle_xianle(仙乐)回复于 2004-12-03 10:20:18 得分 0

saucer(思归)     so   good   ~~~  
   
  楼主,你只想得到   <IMG.*>   里的标准html   吗(saucer的就可以了)?  
   
  如果不是,那你要写的太多了,非常复杂!!!不推荐使用。  
   
  记得前几天看了一个叫   htmlDom(好像是,记不起来什么名了)   的类库挺不错的,  
  可以先转成   DOM   结构的然后对其节点进行重新组合。。。Top

20 楼longsky(长空)回复于 2004-12-03 10:52:32 得分 0

完美!!!  
  比着画了一个   
  s=   Regex.Replace(s,@"<A\s+(((?<title>title=('[^']*'|""[^""]*""|[^\s>]*))|(?<href>href=('[^']*'|""[^""]*""|[^\s>]*))|(?<target>target=('[^']*'|""[^""]*""|[^\s>]*))|(?<others>[^=<>]+=('[^']*'|""[^""]*""|[^\s>]*)))\s*)*[^>]*>",   "<A   ${title}   ${href}   ${target}>",   RegexOptions.IgnoreCase);  
   
  谢谢思归老大帮忙!  
  我是用这个来完成论坛发贴时处理来自粘贴其它处的网页的  
  http://www.chinasf.net/bbsTop

相关问题

  • 怎么样过滤html代码
  • 用JAVA过滤HTML代码的问题!?
  • 如何在浏览器载入html代码之前,先过滤一遍html代码?
  • 有没有哪位写过或看到过过滤HTML的代码
  • Asp.net(C#)求正则表达式过滤输出字段中的html代码
  • 高手点评:怎样过滤掉表单提交文本中的html源代码和脚本
  • 有没有人做过 把网页中的html代码过滤掉,只剩下关键文本
  • 这种向数据库中写HTML的代码的写法是不是要被.net过滤掉?
  • 长角了,发了一个HTML代码过滤函数,在Javascript版,感兴趣的朋友可以看看
  • 怎么过滤掉用户提交数据中的文本筐,按钮等控件,但不要完全过滤掉html代码?请高手指教

关键词

  • .net
  • 代码
  • 过滤
  • imgstring
  • 思归
  • regexoptions
  • ignorecase
  • regex
  • 老大
  • replace

得分解答快速导航

  • 帖主:longsky
  • landlordh
  • xzq686
  • iamknight
  • abm1971
  • saucer

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

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