如何用正则表达式去掉html标签

html-css09

如何用正则表达式去掉html标签,第1张

用正则表达式去掉html标签,下面是它的代码,直接复制就可以用的。

代码:

public

static string StripHTML(string HTML) //google "StripHTML" 得到 {

string[] Regexs = {

@"<script[^>]*?>.*?</script>",

@"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>",

@"([\r\n])[\s]+", @"&(quot|#34)",

@"&(amp|#38)", @"&(lt|#60)",

@"&(gt|#62)", @"&(nbsp|#160)",

@"&(iexcl|#161)",

@"&(cent|#162)",

@"&(pound|#163)",

@"&(copy|#169)", @"(\d+)",

@"-->", @"<!--.*\n" }string[]

Replaces = { "", "", "", "\"", "&",

"<", ">", " ", "\xa1", //chr(161),

"\xa2", //chr(162), "\xa3", //chr(163), "\xa9", //chr(169), "",

"\r\n", "" }string s = HTMLfor (int i = 0i <

Regexs.Lengthi++) { s = new Regex(Regexs[i],

RegexOptions.Multiline | RegexOptions.IgnoreCase).Replace(s,

Replaces[i])} s.Replace("<", "")

s.Replace(">", "")s.Replace("\r\n", "")return s

} }

假设我们要获取下面html标签中的内容:

第一段是获取 <p></p>标签内部的数据,第二个是获取 <p><span></span></p>标签中的数据,其中span标签中有style属性值。

使用过正则表达式的同学肯定知道,上面两种情况其实都是一种情况,我们要获取的是 尖括号括起来的一对标签 中间的数据,起始标签形如<x>,结束标签形如</x>,这里的x表示的html标签。

此外,我们还需要考虑起始标签中包含style的数据,另外特殊的 <br/>标签,对实际获取数据无意义,也需要过滤掉。

通过上面的分析,我们可以如下正则表达式:

在使用正则表达式处理之前,我们先对数据进行预处理,比如style和

标签:

针对多个标签嵌套的情况进行处理,比如 <p><span style="white-space: normal">王者荣耀</span></p>,在经过预处理和正则匹配的后结果是 <span>王者荣耀 ,需要手工移除掉前面的起始标签,对应的方法如下:

测试方法如下:

output:

1、过滤所有html标签的属性的正则表达式:

$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 JavaScript

"'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记

"'([\r\n])[\s]+'",// 去掉空白字符

"'&(quot|#34)'i",// 替换 HTML 实体

"'&(amp|#38)'i",

"'&(lt|#60)'i",

"'&(gt|#62)'i",

"'&(nbsp|#160)'i"

) // 作为 PHP 代码运行

$replace = array ("","","\\1","\"","&","<",">"," ")

$html = preg_replace($search, $replace, $html)