用正则表达式剔除文本中的 html 标记

04-05-25 21:14   View:715

为了剔除文本中的html 标记,通常大家都会使用下面的正则表达式:

/<.*?>/s
在大部分情况下该表达式都能正常运行,但在某些情况下却会出现差错,例如当html 标记含有带 '>' 符号的script 脚本时,如:

<img src='images/1109669135478.jpeg' onload='if(this.width>screen.width-500){this.width=screen.width-500;}' border=0>

此时上面的正则表达式只能匹配到

<img src='images/1109669135478.jpeg' onload='if(this.width>

而无法匹配整个img 标记,这时综合使用下面的几个正则表达式就可以解决问题了:

   1. /<!--.*?-->/s
   2. /<([^>]*?('.*?'|".*?")[^>]*?)*?>/s
   3. /<.*?>/s

说明:

   1. 首先剔除注释标记,这样可以同时剔除掉注释中可能包含的其他html 标记
   2. 剔除含属性声明的html 标记,这样可以剔除上面所提到的在属性中出现的'>'
   3. 剔除不含属性声明的html 标记


Main Feeds

Copyright © 2003-2007 by 方继祥