自己從網(wǎng)上找了一個(gè)過(guò)濾HTML標(biāo)簽的方法,我也不知道誰(shuí)的才是原創(chuàng)的,反正很多都一樣。我把那方法復(fù)制下來(lái),代碼如下:
/// summary>
/// 去除HTML標(biāo)記
/// /summary>
/// param name="NoHTML">包括HTML的源碼 /param>
/// returns>已經(jīng)去除后的文字/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;
}
以上代碼是從網(wǎng)上直接復(fù)制過(guò)來(lái)的,這個(gè)確實(shí)能過(guò)濾掉所有的HTML標(biāo)簽,但是這個(gè)不是我想要的,這個(gè)過(guò)濾得太干凈了,我如果用textarea輸入框的話,我是要保留空格跟換行的。
然后我就自己改了一下這個(gè)方法,textarea的換行是\n,所以我得把這些標(biāo)簽重新匹配替換成br>,這樣的話從數(shù)據(jù)庫(kù)中讀取到頁(yè)面時(shí),就能正確的換行了,把空格替換成HTML的空格符,大功告成。
/// summary>
/// 去除HTML標(biāo)記(保留br跟\r\n)
/// /summary>
/// param name="NoHTML">包括HTML的源碼 /param>
/// returns>已經(jīng)去除后的文字/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;
}