我有一个包含TinyMCE框的asp.net网页,用户可以格式化文本并将HTML发送到数据库中进行存储。
在服务器端,我想要从文本中剥离HTML,以便只将文本存储在全文索引列中进行搜索。
使用jQuery的text()函数在客户端上剥离HTML非常容易,但我真的更愿意在服务器端执行此操作。是否有任何现有的工具可用于此?
编辑
请参见我的答案。
我有一个包含TinyMCE框的asp.net网页,用户可以格式化文本并将HTML发送到数据库中进行存储。
在服务器端,我想要从文本中剥离HTML,以便只将文本存储在全文索引列中进行搜索。
使用jQuery的text()函数在客户端上剥离HTML非常容易,但我真的更愿意在服务器端执行此操作。是否有任何现有的工具可用于此?
请参见我的答案。
我下载了 HtmlAgilityPack,并创建了以下函数:
string StripHtml(string html)
{
// create whitespace between html elements, so that words do not run together
html = html.Replace(">","> ");
// parse html
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
// strip html decoded text from html
string text = HttpUtility.HtmlDecode(doc.DocumentNode.InnerText);
// replace all whitespace with a single space and remove leading and trailing whitespace
return Regex.Replace(text, @"\s+", " ").Trim();
}
看一下这篇使用正则表达式从字符串中去除HTML标签
TextReader tr = new StreamReader(@"Filepath");
string str = tr.ReadToEnd();
str= Regex.Replace(str,"<(.|\n)*?>", string.Empty);
但是你需要引用一个命名空间,例如:
system.text.RegularExpressions
只需将这个逻辑应用于您的网站
以下是Jeff Atwood关于他的HTML清理方法的RefactorMe代码链接:
您可以使用HTQL COM,并使用以下查询来查询源代码:
<body> &tx你可以:
由于系统中可能存在格式不正确的HTML:可以使用BeautifulSoup或类似工具。
它是用Python编写的;我不确定如何进行接口处理 - 是否可以使用.NET语言IronPython?
string strwithouthtmltag;
strwithouthtmltag = Regex.Replace(strWithHTMLTags, "<[^>]*>", string.Empty)
如果您只是为了索引而存储文本,那么您可能希望做更多的事情,而不仅仅是删除HTML,例如忽略停用词和删除长度小于(比如说)3个字符的单词。然而,我曾经编写过的一个简单的标签和剥离器大致如下:
public static string StripTags(string value)
{
if (value == null)
return string.Empty;
string pattern = @"&.{1,8};";
value = Regex.Replace(value, pattern, " ");
pattern = @"<(.|\n)*?>";
return Regex.Replace(value, pattern, string.Empty);
}
这是旧的代码,我相信它可以进行优化(也许使用编译过的正则表达式?)。但它确实可以运行并可能有所帮助...