在asp.net中,有的时候我们需要将带有HTML标记的字符串插入到数据库中,但是,从数据库中显示读取数据显示出来的时候,可不一定需要这些字符串中的标记,而仅仅需要保留文字而已。
比如,如果字符串的内容为如下的内容:
回复第<span style="color:#009900;"><strong>9</strong></span>个问题
这个时候,如果我们将上面的字符串作为网页的标题文字的话,那么,显示的时候必然是不正常的,而这个时候,我们只需要文字部分,不需要标记标签部分,现在,我们要做的就是从数据库中读取字符串内容后,如何去除这些HTML标签。
第一步:引入
using System.Text.RegularExpressions;
因为我们要使用正则的办法去除HTML标记,所以要引入。
第二步:使用下面的函数
public string FilterHtmlCode(string strInput) //过滤掉字符串中出现的HTML的标记
{
string strRet = strInput;
while (strRet.IndexOf("<style", StringComparison.InvariantCultureIgnoreCase) >= 0 && strRet.IndexOf("</style", StringComparison.InvariantCultureIgnoreCase) >= 0)
{
strRet = strRet.Substring(0, strRet.IndexOf("<style", StringComparison.InvariantCultureIgnoreCase)) + strRet.Substring(strRet.IndexOf("</style", StringComparison.InvariantCultureIgnoreCase) + 8, strRet.Length - strRet.IndexOf("</style", StringComparison.InvariantCultureIgnoreCase) - 8);
}
while (strRet.IndexOf("<script", StringComparison.InvariantCultureIgnoreCase) >= 0 && strRet.IndexOf("</script", StringComparison.InvariantCultureIgnoreCase) >= 0)
{
strRet = strRet.Substring(0, strRet.IndexOf("<script", StringComparison.InvariantCultureIgnoreCase)) + strRet.Substring(strRet.IndexOf("</script", StringComparison.InvariantCultureIgnoreCase) + 9, strRet.Length - strRet.IndexOf("</script", StringComparison.InvariantCultureIgnoreCase) - 9);
}
strRet = Regex.Replace(strRet, @"<style>[^<]*</style>", "");
strRet = Regex.Replace(strRet, @"<script>[^<]*</script>", "");
//strRet = Regex.Replace(strRet, @"<script[\s\S]+</script *>", "");
strRet = Regex.Replace(strRet, "<[^{><}]*>", "");
return strRet;
}
第三步:调用方法
FilterHtmlCode("这里是字符串的原始内容");