• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ASP.NET过滤HTML标签只保留换行与空格的方法

c# 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

本文实例讲述了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",      RegexO<b style="color:transparent">本文来源gao@!dai!ma.com搞$$代^@码!网!</b>ptions.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)", " ");    return Htmlstring;}

这个过滤可以用于让用户输入发布内容时的过滤。

希望本文所述对大家的asp.net程序设计有所帮助。

更多ASP.NET过滤HTML标签只保留换行与空格的方法相关文章请关注搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ASP.NET过滤HTML标签只保留换行与空格的方法
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址