[英]How Can I strip HTML from Text in .NET?
我有一个带有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();
}
这是Jeff Atwood的Sanitize HTML方法的RefactorMe代码链接
TextReader tr = new StreamReader(@"Filepath");
string str = tr.ReadToEnd();
str= Regex.Replace(str,"<(.|\n)*?>", string.Empty);
但你需要引用一个命名空间,即:
system.text.RegularExpressions
只为你的网站采取这种逻辑
你可以使用这样的东西
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);
}
它已经过时了,我确信它可以进行优化(可能使用已编译的reg-ex?)。 但它确实有效并可能有所帮助......
你可以:
由于您在系统中可能存在格式错误的HTML:可能会使用BeautifulSoup或类似内容。
它是用Python编写的; 我不确定它是如何接口的 - 使用.NET语言IronPython?
您可以使用HTQL COM,并使用查询查询源:<body>&tx;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.