·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> asp.net过滤HTML标签,只保留换行与空格

asp.net过滤HTML标签,只保留换行与空格

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

asp.net过滤HTML标签,只保留换行与空格

自己从网上找了一个过滤HTML标签的方法,我也不知道谁的才是原创的,反正很多都一样。我把那方法复制下来,代码如下:

///   <summary>///   去除HTML标记///   </summary>///   <param   name="NoHTML">包括HTML的源码   </param>///   <returns>已经去除后的文字</returns>public static string NoHTML(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;}

以上代码是从网上直接复制过来的,这个确实能过滤掉所有的HTML标签,但是这个不是我想要的,这个过滤得太干净了,我如果用textarea输入框的话,我是要保留空格跟换行的。

然后我就自己改了一下这个方法,textarea的换行是\n,所以我得把这些标签重新匹配替换成<br>,这样的话从数据库中读取到页面时,就能正确的换行了,把空格替换成HTML的空格符,大功告成。

       ///   <summary>        ///   去除HTML标记(保留br跟\r\n)(此方法由博客园-三卷天书修改成)        ///   </summary>        ///   <param   name="NoHTML">包括HTML的源码   </param>        ///   <returns>已经去除后的文字</returns>        public static string NewNoHTML(string Htmlstring)        {            //Htmlstring.Replace("\\r\\n", "%r%n").Replace("<br>","%br%").Replace("<br/>","%br&%").Replace("\\n","%n");            //删除脚本            Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "",              RegexOptions.IgnoreCase);            //删除HTML            Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "",              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);            Htmlstring = Regex.Replace(Htmlstring, @"((\r\n))", "<br>");            Htmlstring = Regex.Replace(Htmlstring, @"(\r|\n)", "<br>");            Htmlstring = Regex.Replace(Htmlstring, @"(\s)", "&nbsp;");            return Htmlstring;        }

这个过滤可以用于让用户输入发布内容时的过滤,如有不足之处,请大家批评指正!