ASP.NET中过滤HTML字符串的两个方法
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET中过滤HTML字符串的两个方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先記下來,以作備用!
?? ? ? ?///???<summary>去除HTML標記????????///???????
????????///???</summary>???
????????///???<param?name="Htmlstring">包括HTML的源碼</param>???
????????///???<returns>已經去除后的文字</returns>???
????????public?static?string?GetNoHTMLString(string?Htmlstring)
????????{
????????????//刪除腳本???
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"<script[^>]*?>.*?</script>",?"",?RegexOptions.IgnoreCase);
????????????//刪除HTML???
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"<(.[^>]*)>",?"",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"([\r\n])[\s]+",?"",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"-->",?"",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"<!--.*",?"",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(quot|#34);",?"\"",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(amp|#38);",?"&",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(lt|#60);",?"<",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(gt|#62);",?">",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(nbsp|#160);",?"???",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(iexcl|#161);",?"\xa1",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(cent|#162);",?"\xa2",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(pound|#163);",?"\xa3",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"&(copy|#169);",?"\xa9",?RegexOptions.IgnoreCase);
????????????Htmlstring?=?Regex.Replace(Htmlstring,?@"(\d+);",?"",?RegexOptions.IgnoreCase);
????????????Htmlstring.Replace("<",?"");
????????????Htmlstring.Replace(">",?"");
????????????Htmlstring.Replace("\r\n",?"");
????????????Htmlstring?=?HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
????????????return?Htmlstring;
????????}
????????///?<summary>獲取顯示的字符串,可顯示HTML標簽,但把危險的HTML標簽過濾,如iframe,script等。
????????///?
????????///?</summary>
????????///?<param?name="str">未處理的字符串</param>
????????///?<returns></returns>
????????public?static?string?GetSafeHTMLString(string?str)
????????{
????????????str?=?Regex.Replace(str,?@"<applet[^>]*?>.*?</applet>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<body[^>]*?>.*?</body>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<embed[^>]*?>.*?</embed>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<frame[^>]*?>.*?</frame>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<script[^>]*?>.*?</script>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<frameset[^>]*?>.*?</frameset>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<html[^>]*?>.*?</html>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<iframe[^>]*?>.*?</iframe>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<style[^>]*?>.*?</style>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<layer[^>]*?>.*?</layer>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<link[^>]*?>.*?</link>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<ilayer[^>]*?>.*?</ilayer>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<meta[^>]*?>.*?</meta>",?"",?RegexOptions.IgnoreCase);
????????????str?=?Regex.Replace(str,?@"<object[^>]*?>.*?</object>",?"",?RegexOptions.IgnoreCase);
????????????return?str;
????????}
?
?
轉載于:https://www.cnblogs.com/niunan/archive/2010/05/20/1739813.html
總結
以上是生活随笔為你收集整理的ASP.NET中过滤HTML字符串的两个方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 位域[flags]
- 下一篇: asp.net ajax控件工具集 Au