今天在制作一个显示文章列表的页面,从数据库中读出文章标题及部分内容显示到页面上,可以让读者在列表中就可以了解到该文章的大概。完成后却发现了一个问题,就是在翻页后有些页面显示的不完整了,或者页面布局全变乱了,但有几页却没有。查看有问题页面的源代码,发现原来是因为文章内容中包含了HTML代码,然后我在读取部分内容的时候就简单的在数据库中用了left函数,所以导致读出了未封闭的HTML标签了,显示到页面上后和页面自身的HTML标签一结合,布局就全乱了。
原因找出来了,就寻找解决问题的方法.
解决方法一:将读出来的内容经过HTML编码后再输出到页面上,该方法虽不会引起界面布局错乱的问题,但浏览者会看到一大串HTML标签,毕竟不是很友好。于是该方法淘汰。
解决方法二:过滤掉读出内容所有HTML标签,这样即不会让浏览者看到不应该看到的HTML标签,也不会引发页面布局错乱.
下面贴出过滤掉所有HTML标签的方法,供大家参考:
/// <summary >
/// 过滤所有的Html标签
/// </summary >
/// <param name="Htmlstring" ></param >
/// <returns ></returns >
public static string RemoveHTML(string Htmlstring)
{
Htmlstring = Regex.Replace(Htmlstring, @"<script[^ >]*? >.*?</script >", "",RegexOptions.IgnoreCase);
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;
}
以上方法,希望能给大家带来帮助。