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, @"([rn])[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("rn", "");
  Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();

  return Htmlstring;
}

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

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

 代码如下 复制代码
///   <summary>
///   去除HTML标记(保留br跟rn)(此方法由博客园-三卷天书修改成)
///   </summary>
///   <param   name="NoHTML">包括HTML的源码   </param>
///   <returns>已经去除后的文字</returns>
public static string NewNoHTML(string Htmlstring)
{
    //Htmlstring.Replace("rn", "%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("rn", "");
    Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring);
    Htmlstring = Regex.Replace(Htmlstring, @"((rn))", "<br>");
    Htmlstring = Regex.Replace(Htmlstring, @"(r|n)", "<br>");
    Htmlstring = Regex.Replace(Htmlstring, @"(s)", "&nbsp;");
    return Htmlstring;
}

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

时间: 2024-05-07 22:27:11

asp.net自定义函数过滤HTML标签只保留换行与空格的相关文章

ASP.NET过滤HTML标签只保留换行与空格的方法_实用技巧

本文实例讲述了ASP.NET过滤HTML标签只保留换行与空格的方法.分享给大家供大家参考.具体分析如下: 自己从网上找了一个过滤HTML标签的方法,我也不知道谁的才是原创的,反正很多都一样.我把那方法复制下来,代码如下: 复制代码 代码如下: ///   <summary> ///   去除HTML标记 ///   </summary> ///   <param name="NoHTML">包括HTML的源码   </param> ///

ThinkPHP自定义函数解决模板标签加减运算的方法_php实例

本文实例讲述了ThinkPHP自定义函数解决模板标签加减运算的方法.分享给大家供大家参考.具体如下: 实际项目中,我们经常需要标签变量加减运算的操作.但是,在ThinkPHP中,并不支持模板变量直接运算的操作. 幸运的是,它提供了自定义函数的方法,我们可以利用自定义函数解决: ThinkPHP模板自定义函数语法如下: 格式:{:function(-)} (参考官方帮助文档:http://thinkphp.cn/Manual/196) 利用这个,我们来试做加法和减法. 一.在ThinkPHP中定义

php自定义函数转换html标签示例_php技巧

本文实例讲述了php自定义函数转换html标签的方法.分享给大家供大家参考,具体如下: <?php /* * Created on 2016-9-29 * */ $orig = "I'll \"walk\" the <b>dog</b> now"; $a = htmlentities($orig); $b = html_entity_decode($a); echo $a; // I'll "walk" the &l

Python过滤函数filter()使用自定义函数过滤序列实例_python

filter函数: filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤.最终一次性返回过滤后的结果. filter()函数有两个参数: 第一个,自定函数名,必须的 第二个,需要过滤的列,也是必须的 DEMO 需求,过滤大于5小于10的数: 复制代码 代码如下: # coding=utf8 # 定义大于5小于10的函数 def guolvhanshu(num):     if num>5 and num<

asp 过滤html标签

这是四款asp 过滤html标签函数与方法,这些大全部都是利用正则表达式来过滤以<与>的数据,然后替换里面的东西,这样asp过滤html的函数不成功了. function htmlencode(text) { return text.replace(/&/g, '&amp').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>'); } function htmldecode(

PHP:过滤html标签的函数

php过滤html的函数:   strip_tags(string)   这样就可以过滤掉所有的html标签了.   如果想过滤掉除了<img src="">之外的所有html标签,则可以这样写: strip_tags(string,"<img>"); 过滤除了<img src=""><p>xxx</p><b></b>之外的所有html标签,则可以这样写: str

asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结

通常javascript代码可以与HTML标签一起直接放在前 端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿:所以一般有良好开发习惯的程序员都会把 javascript代码放到独立的js文件中,其他页面通过引入该js文件来使用相应的 javascript代码.用如下方法引用JS文件:<script src="script/admin.js" type="text/javascript"></scr

ASP处理文件上传以及删除时常用的自定义函数

asp 中处理文件上传以及删除时常用的自定义函数: <% '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '所有自定义的VBS函数 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' function DeleteFile(Filename) '删除文件 if Filename<>"&qu

ASP获取字符串长度的自定义函数

ASP获取字符串长度的自定义函数 '----------------------------------------------------------------'' getStrLen' 获取字符长度,一个中文字符长度算 2' 参数:' str 需要获取长度的字符串' 返回值:整数 (字符串的长度)'----------------------------------------------------------------'Function GetStrLen(str)If IsNull