簡體   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