我必须使用HTML and CSS
格式将用户输入文本存储在我的数据库中。
案例是:
RadEditor,用户将文本从MSWord复制到此编辑器,然后我将此文本存储在具有该格式的数据库中。然后当检索报告中的数据或某些标签时,会出现一些标签包裹文本!!
我使用正则表达式来删除所有格式,但是它有时会成功,而不是所有时间都成功。
private static Regex oClearHtmlScript = new Regex(@"<(.|\n)*?>", RegexOptions.Compiled);
public static string RemoveAllHTMLTags(string sHtml)
{
sHtml = sHtml.Replace(" ", string.Empty);
sHtml = sHtml.Replace(">", ">");
sHtml = sHtml.Replace("<", "<");
sHtml = sHtml.Replace("&", "&");
if (string.IsNullOrEmpty(sHtml))
return string.Empty;
return oClearHtmlScript.Replace(sHtml, string.Empty);
}
我问如何使用HTMLAgility或任何可靠的方式删除所有格式以确保文本是纯粹的?
Note:
数据库中此字段的数据类型为Lvarchar
答案 0 :(得分:2)
This post推荐以下方法(似乎已被接受)。
Regex.Replace(myHTMLString, @"<p>|</p>|<br>|<br />", "\r\n", );
Regex.Replace(myHTMLString, @"<.+?>", string.Empty);
如果您仍然遇到困难,可以尝试实例化RadEditor并使用.Text属性。我之前没有使用过RadEditor但是我做了一些挖掘 - 你能不能试试像这样的事情
RadEditor editor = new RadEditor();
editor.Content = myHTMLString;
string plainText = editor.Text;
这可能是一项非常昂贵的操作,但我很想知道它是否有效!
答案 1 :(得分:2)
这应该从字符串中删除所有html标记。
sHtml = Regex.Replace(sHtml, "<.*?>", "");
答案 2 :(得分:2)
HtmlAgility包可以轻松使用HTML。
HtmlDocument mainDoc = new HtmlDocument();
string htmlString = "<html><body><h1>Test</h1> more text</body></html>"
mainDoc.LoadHtml(htmlString);
string cleanText = mainDoc.DocumentNode.InnerText;
答案 3 :(得分:1)
请参阅我的回答here,了解如何使用Agility Pack完成任务。 您可能需要稍微更改一下代码,而不是删除少于两个字符的单词。此外,换行符也将被删除,因此您将留下一长串文字。