jquery 如何在.NET中从文本中剥离HTML?

dwbf0jvd  于 2023-11-17  发布在  jQuery
关注(0)|答案(9)|浏览(158)

我有一个asp.net网页,它有一个TinyMCE框。用户可以格式化文本并发送HTML以存储在数据库中。
在服务器上,我想从文本中剥离HTML,这样我就可以只存储在全文索引列中的文本以供搜索。
在客户端使用jQuery的text()函数剥离html是轻而易举的事,但我更愿意在服务器上这样做。

编辑

看我的回答。

编辑2

alt text http://tinyurl.com/sillychimp

dsf9zpds

dsf9zpds1#

我下载了HtmlAgilityPack并创建了这个函数:

  1. string StripHtml(string html)
  2. {
  3. // create whitespace between html elements, so that words do not run together
  4. html = html.Replace(">","> ");
  5. // parse html
  6. var doc = new HtmlAgilityPack.HtmlDocument();
  7. doc.LoadHtml(html);
  8. // strip html decoded text from html
  9. string text = HttpUtility.HtmlDecode(doc.DocumentNode.InnerText);
  10. // replace all whitespace with a single space and remove leading and trailing whitespace
  11. return Regex.Replace(text, @"\s+", " ").Trim();
  12. }

字符串

展开查看全部
x3naxklr

x3naxklr3#

查看以下示例:

  1. TextReader tr = new StreamReader(@"Filepath");
  2. string str = tr.ReadToEnd();
  3. str= Regex.Replace(str,"<(.|\n)*?>", string.Empty);

字符串
但你需要有一个命名空间引用,即:

  1. System.Text.RegularExpressions


只有把这个逻辑为您的网站

von4xj4u

von4xj4u4#

这是Jeff Atwood的Sanitize HTML method的RefactorMe代码链接

mpbci0fu

mpbci0fu5#

如果你只是为了索引而存储文本,那么你可能想做的不仅仅是删除HTML,比如忽略停止词和删除短于(比如)3个字符的单词。然而,我曾经写过一个简单的标签和剥离器是这样的:

  1. public static string StripTags(string value)
  2. {
  3. if (value == null)
  4. return string.Empty;
  5. string pattern = @"&.{1,8};";
  6. value = Regex.Replace(value, pattern, " ");
  7. pattern = @"<(.|\n)*?>";
  8. return Regex.Replace(value, pattern, string.Empty);
  9. }

字符串
这是旧的,我相信它可以优化(也许使用编译的reg-ex?)。但它确实工作,可能会有所帮助。

ocebsuys

ocebsuys6#

您可以:

  • 使用一个普通的旧TEXTAREA(样式为高度/宽度/字体/等),而不是TinyMCE。
  • 使用TinyMCE的内置配置选项来剥离不需要的HTML。
  • 在服务器上使用HtmlDecode(RegEx.Replace(mystring,“<[^>]+>",“”))。
hs1rzwqc

hs1rzwqc7#

由于您可能在系统中有格式错误的HTML:BeautifulSoup或类似的可以使用。
它是用Python编写的;我不确定它如何接口-使用.NET语言IronPython?

w7t8yxp5

w7t8yxp58#

您可以使用HTQL COM,并使用查询来查询源:&tx;

sqserrrh

sqserrrh9#

你可以用这个

  1. string strwithouthtmltag;
  2. strwithouthtmltag = Regex.Replace(strWithHTMLTags, "<[^>]*>", string.Empty)

字符串

相关问题