注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

红尘若梦

生活的色彩

 
 
 

日志

 
 

从Word或网页复制内容利用正则表达式去除多余标签及属性生成简洁HTML代码的办法  

2016-05-17 13:36:53|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
经常会碰上从word里面拷贝出来文字,或者复制转发某些精彩贴子时,都会顺带生成大量的垃圾代码。最后如果想要得到干净的html 代码,当然最好的办法就是拷贝文字出来然后用文本编辑器书写htm标签。不过,这笨办法费时费力。有大量的软件也可以做到这一点,但其实也很麻烦。
但是如果使用正则表达式替换的话,就不算麻烦了[当然那些软件其实也是使用正则表达式替换]。
首先是删除不需要的标签[这里以EmEditor为例来正则替换]:

<[/]?(font|span|xml|[ovwxp]:w+)[^>]*?>

如果您还有其它需要删除的标签也可以加上。
然后同去删除class,style...等不需要的属性。

<([^>]*)(?:class|lang|style|size|face|[ovwxp]:w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>

对了,如果需要保留其中的<img 标签,只是删除其中一些多余的属性,那么就换用如下的正则:

(?:class|lang|style|size|face|[ovwxp]:w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>] )

但是如上正则还是稍有一些问题,比如如下一段html代码就会将有用的代码也替换了。

<img class="12323" src="http://593668.com/skin/default/image/logo.gif" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; font-family: Arial; text-align: left; background-color: rgb(249, 249, 236); cursor: pointer; " />&nbsp;<br />

所以要用如下相应的正规表达式来替换[这样就会保留有关img标签的有用代码]:

(?:class|lang|style|size|face|[ovwxp]:w+)=(?:'[^']*'|"[^"]*"|[^>]+)

当然如果某些属性值有没有被'或"包括进来的话,如face=412w,示范代码如下:

<img class="12323" face=412w src="http://593668.com/skin/default/image/logo.gif" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; font-family: Arial; text-align: left; background-color: rgb(249, 249, 236); cursor: pointer; " />&nbsp;<br />

就还需再次使用如下正规表达式再替换:

(?:class|lang|style|size|face|[ovwxp]:w+)=\w*[ ]

这样最终可以将所有的垃圾代码清除干净,并保留有用的代码。





  评论这张
 
阅读(35)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017