HTML代码过滤函数

原创 2005年04月23日 11:40:00

/////////////////////////////////////////////////////////////////////
//
//  在线编辑器过滤函数:FiltrationHTML
//  作用:把从word、IE拷贝来的数据过滤,保留需要的标记及属性,去掉多
//        余,统一页面样式。
//  过滤:保留<p><sup><sub><table><tr><td><img><br>标记,以及<td>中的
//        colspan、rowspan属性,其它标记及属性全部清除。为表格替换统
//        一样式。
//  原理:先用特殊字符串"『〈"和"〉』"替换需要保留的标记"<"和">",然
//        后去掉不需要的,再把特殊字符恢复原状。这种字符串组合基本可
//        以避免被用户误输入,也可换成其它的。
//  缺点:过滤还不是特别全面。因为要复制的内容千变万化,有些特殊情况
//        没有解决。
//        在线编辑器会自动产生某些标记,<TBODY><a>,无法解决。
//  最后修改时间:2004.7.26 土狗
//
/////////////////////////////////////////////////////////////////////
function FiltrationHTML(HTML)
{
 var temp = HTML;
 temp = temp.replace(/<script[^>]*?>(.|/n)*?<//script>/gim,""); //过滤<script></script>块
 temp = temp.replace(/<(p |p>)/gi,  "『〈$1"); //分段  <p>
 temp = temp.replace(/<(//p)/gi,   "『〈$1"); //分段  </p>
 temp = temp.replace(/<(sup>)/gi,  "『〈$1"); //上标  <sup>
 temp = temp.replace(/<(//sup)/gi,  "『〈$1"); //上标末 </sup>
 temp = temp.replace(/<(sub)/gi,   "『〈$1"); //下标  <sub>
 temp = temp.replace(/<(//sub)/gi,  "『〈$1"); //下标末 </sub>
 temp = temp.replace(/<(table)/gi,  "『〈$1"); //表格  <table>
 temp = temp.replace(/<(//table)/gi, "『〈$1"); //表格末 </table>
 temp = temp.replace(/<(tr |tr>)/gi, "『〈$1"); //行   <tr>
 temp = temp.replace(/<(//tr)/gi,  "『〈$1"); //行末  </tr>
 temp = temp.replace(/<(td |td>)/gi, "『〈$1");//列    <td>
 temp = temp.replace(/<(//td)/gi,  "『〈$1"); //列末  </td>
 temp = temp.replace(/<(img )/gi,  "『〈$1"); //图片  <img>
 temp = temp.replace(/<(br)/gi,   "『〈$1"); //换行符 <br>
 temp = temp.replace(/(『〈[^>]*)>/gi,"$1〉』"); //右括号

 temp = temp.replace(/<[^>]*>/gi,"");   //过滤其它所有"<...>"标签
 temp = temp.replace(//&nbsp;/gi," ");   //替换所有&nbsp;为空格

 temp = temp.replace(/『〈/gi,"<");    //恢复<
 temp = temp.replace(/〉』/gi,">");    //恢复>

 temp = temp.replace(/(<table)[^>]*(>)/gi,"$1 border=/"1/" cellpadding=/"1/" cellspacing=/"1/" style=/"border-collapse: collapse/" bordercolor=/"#333333/" width=/"100/%/"$2"); //清除表格属性并加样式
 temp = temp.replace(/(<[^>]*)colspan(=[^/s>]*)/gi,"$1 『col$2』"); //给<td>中需要的属性加『』
 temp = temp.replace(/(<[^>]*)rowspan(=[^/s>]*)/gi,"$1 『row$2』"); //给<td>中需要的属性加『』

 temp = temp.replace(/(<tr)[^>]*(>)/gi,"$1$2");    //清除TR属性
 temp = temp.replace(/(<td)[^>『]*(>)/gi,"$1$2");   //清除不包含『』的TD的属性
 temp = temp.replace(/(<td)[^>『]*『/gi,"$1『");    //替换 <td...『之间内容
 temp = temp.replace(/(<[^>』]*』)[^>]*(『[^>『]*>)/gi,"$1$2");  //替换『』...『』之间内容
 temp = temp.replace(/(』)[^>』]*(>)/gi,"$1$2");    //替换『』...>之间内容
 temp = temp.replace(/<p[^>]*>/gi,"<p>");    //清除<p>中多余属性

 temp = temp.replace(/『(col)(=/d{1,4})』/gi," $1"+"span"+"$2");  //还原  colspan
 temp = temp.replace(/『(row)(=/d{1,4})』/gi," $1"+"span"+"$2");  //还原  rowspan
 temp = temp.replace(/(<img)[^>]*(>)/gi,"$1 src=/"/""+"$2");  //替换  <img>
 
 return temp;
}

PHP防注入攻击过滤HTML代码函数

/***** 说明:  * 当附合要求的参数传递进filter函数后,filter()函数首先  * 把要字串中所有要过滤的标签$tag通过preg_match_all()  * 取出来,然后循环pr...

格式化html代码的函数有哪些

htmlspecialchars () htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。语法为:htmlspecialchars(string,quotestyl...

js中insertAdjacentHTML函数在元素标签的前中后插入html代码

Adajcent  邻近的 原型:insertAdajcentHTML(swhere,stext) insertAdjacentHTML方法:在指定的地方插入html标签语句 参数: s...

Aspnet中过滤html代码

  • 2013年11月06日 01:02
  • 795B
  • 下载

几种过滤html代码的方法总结

http://hi.baidu.com/crp8/blog/item/b5d7e503fd35d9743812bb60.html 过滤html代码的sql自定义函数 create function...
  • zzlrpg
  • zzlrpg
  • 2012年04月19日 10:28
  • 330

编辑器。以及过滤成安全的HTML代码

1.编辑器使用 提取的校内网的编辑器2.过滤成安全的HTML代码:PHPfunction h($text){$text = trim($text);$text = stripslashes($text...
  • yfgcq
  • yfgcq
  • 2011年06月24日 11:48
  • 648

c#两种过滤HTML代码

public string checkStr(string html) { System.Text.RegularExpressions.Regex regex1 = ...

php过滤危险html代码

  • 2009年02月07日 23:16
  • 691B
  • 下载

用Sql过滤Html代码

  • 2010年09月20日 22:41
  • 1KB
  • 下载

提供一个JAVA过滤HTML代码和截取字符串的类(包括测试用例)

import java.util.regex.Pattern; public class FunctionUtil { public static void main(Strin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTML代码过滤函数
举报原因:
原因补充:

(最多只允许输入30个字)