繁体   English   中英

将HTML转换为纯文本

[英]Convert Html to plain text

我使用tinymce编辑器作为富文本编辑器。 我的问题是当我保存文本时,它以html格式保存,例如

<p> Hello world<p/>

在上面的示例中,我需要一个纯文本,即“ Hello World”。 我在Google上搜索,发现类似html编码的东西。 我不知道那是什么 我是这个概念的新手。 我正在使用asp.net MVC 5,并且已将tinymce用作:

模型是

namespace ProjectNSAS.Models{
public class AboutModels
{
    [Key]
    public int Id { get; set; }
    [UIHint("tinymce_jquery_full"), AllowHtml]
    public string Content { get; set; }
}

这可能不是最好的帮助,但是.txt文件也是纯文本的一种形式。 如果您只想查看代码而不运行它,请尝试使用.txt进行操作。

HTML中的某些字符对HTML意味着特殊的意义。 具体来说,打开和关闭标签(“ <”和“>”)放在一起时,意味着它们之间的内容指定了一个元素。 如果这些字符不是HTML标记所必需的,则HTML解析器会遇到麻烦。 当HTML文件想要表示文字大于或小于字符时,它将分别用“>”和“ <”替换它们来“编码”它们。 浏览器和其他使用HTML的产品知道这两个字符串代表“转义”的HTML字符。

.NET有一个小的库,用于转义/取消转义HTML字符串-这是HttpUtility类。 具体来说,请检查HttpUtility.HtmlEncodeHttpUtility.HtmlDecode

在后台,编辑器提供了getcontent方法,该集成没有提供我可以轻松找到的访问点。 但是,实现非常简单。

TinyMCE具有以下代码将其html转换为文本:

在:jquery.tinymce.js:

... t.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g, "") ...

基本上这只是一个javascript正则表达式的替换,在您的C#代码中执行相同的操作,然后解码html。

这是一个示例控制器:

public class TinyController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(TinyMCEModelJQuery model)
    {
        var foo = model.Content;
        Regex regex = new Regex("<(?:\"[^\"]*\"|'[^']*'|[^'\">])*>");
        var htmlPlainText = regex.Replace(foo, string.Empty);
        var plainText = HttpUtility.HtmlDecode(htmlPlainText);
        // do what you need with plainText

        return View();

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM