正则表达式如何过滤HTML标签中的属性值

html-css06

正则表达式如何过滤HTML标签中的属性值,第1张

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)

用正则表达式过滤html中所有Script 的方法:

1、定义正则表达式:

/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi

2、用正则表达式处理script的方法如下:

<html>

<head>

<!--此处引入script脚本用于测试开始-->

<script type="text/javascript" src="/jquery/jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$(".btn1").click(function(){

alert($("p").html())

})

})

</script>

<!--此处引入script脚本用于测试结束-->

</head>

<body>

<p>This is a paragraph.</p>

<!--这里增加一个按钮,点击后会删除所有的script块的代码-->

<button class="btn1" onclick="removeAllScript()">删除script</button>

</body>

</html>

<!--定义function处理删除-->

function removeAllScript(obj){

//定义正则表达式,只要是存在于<script>和</script>之间的内容都会被删除

var SCRIPT_REGEX = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi

while (SCRIPT_REGEX.test(obj)) {//传入文档对象,获取整体内容

text = text.replace(SCRIPT_REGEX, "")//正则替换为空

}

}