【问题标题】:How to convert markdown (WMD) text to plain text如何将 Markdown (WMD) 文本转换为纯文本
【发布时间】:2011-03-12 15:04:01
【问题描述】:

我将 Markdown 文本和 html 版本的文本保存在我的数据库中,用于我的问答网站。

当用户浏览问题时,他们正在查看 markdown 的 sn-ps。他们应该只查看纯文本,就像在 stackoverflow 上浏览问题时没有显示降价文本或 html 文本一样。

有没有办法将 markdown 或 html 文本转换为纯文本?

【问题讨论】:

  • 从我的研究看来,您只需将 Markdown 存储在数据库中,然后在输出时对其进行清理。这也将减少您的存储需求。
  • 只是出于好奇 - 如果您不打算向最终用户显示 HTML,为什么要从 markdown 生成它,以及为什么要存储它?
  • @Franci,在我的回答中查看我的 cmets。我“认为”他指的是在预览中没有 HTML(注意他是如何提到“浏览这个问题”

标签: c# html markdown


【解决方案1】:

另一种解决方案是使用 markdown XSLT 文件。

例如:HTML To Markdown Text

【讨论】:

    【解决方案2】:

    StackOverflow 上的问题是以 HTML 而非纯文本形式查看的。它们使用 Jeff Atwood 的 HTML sanitizer 进行清理,然后使用 MarkDownSharp 转换为 HTML。

    几周前我asked this question,我最终得到的解决方案是将原始降价存储在数据库中,然后在向访问者显示时对其进行转换。

    这是我清理 Markdown 的方法

            ''# Because some people can be real ass holes and try to submit bad data (scripts and crap)
            ''# we have to modify the "About" content in order to sanitize it.  At the same time, we
            ''# transform the Markdown into valid HTML
            user.About = Trim(Utilities.HtmlSanitizer.Sanitize(MarkDownSharp.Transform(user.About)))
    

    由于 MarkdownSharp 是开源的,我相信您可以深入研究源代码并删除您不想在预览中看到的附加标签。

    编辑:

    由于在我的示例中,我在转换 Markdown 之前对 HTML 进行了清理,因此我认为您必须删除 HtmlSanitizer 和 MarkdownSharp 中的 <b><strong> 标记。这样做的原因是您需要清理原始 html 标记和降价标记。

    【讨论】:

    • 在这个问题中,我把“你好”这个词加粗了……如果你可以回去浏览这个问题,“你好”就不会加粗了。这就是我需要的
    • 您可以通过将<b></b> 标记从markdown 中“清理”出来来做到这一点。
    • 请问如果您只显示纯文本,为什么要使用 Markdown?为什么不直接使用 TextArea?
    • 我想我现在理解你了。您在完整视图中显示 HTML,但不在预览中显示......对吗?如果是这样,您将再次使用我在上面发布的“Html Sanitizer”链接,但有两种方法。 SanitizeHtmlForDisplaySanitizeHtmlForPreview 预览版的白名单规则较少。
    • 卢克。为了实现这一目标,您的白名单规则是什么样的?我想看看你得到了什么结果。
    猜你喜欢
    • 2020-08-27
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2012-04-12
    • 2014-09-08
    • 2010-09-22
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多