如何将Markdown(WMD)文本转换为纯文本

3

我在我的问答网站上保存了Markdown文本和HTML版本的文本。当用户浏览问题时,他们会看到Markdown的片段。他们应该只看到纯文本,就像在stackoverflow浏览问题时没有显示Markdown或HTML文本一样。

有没有一种方法将Markdown或HTML文本转换为纯文本?


1
从我的调研来看,你只需要将 Markdown 存储在数据库中,然后在输出时对其进行清洁处理即可。这样还可以减少存储需求。 - Chase Florell
只是出于好奇 - 如果您不打算向最终用户显示HTML,则为什么要从Markdown生成它,并将其存储? - Franci Penov
@Franci,请看一下我的回答中的评论。我“认为”他指的是预览中没有HTML(注意他提到了“浏览此问题”)。 - Chase Florell
2个回答

4

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

几周前,我提出了这个问题,最终的解决方案是将原始的Markdown存储在数据库中,然后在向访问者展示时进行转换。

以下是我如何清理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中删除标签。原因是您需要清理原始html标记和markdown标记。


在这个问题中,我将“Hello”这个单词加粗了...如果你回去浏览一下这个问题,“Hello”就不会加粗。这就是我需要的。 - Luke101
您需要通过“清理”Markdown中的<b></b>标签来完成此操作。 - Chase Florell
我可以问一下,如果你只是展示纯文本,为什么要使用Markdown呢?为什么不直接使用TextArea? - Chase Florell
我现在明白你的意思了。你在完整视图中显示HTML,但不在预览中显示...是这样吗?如果是这样,那么你可以使用我上面发布的“Html Sanitizer”链接,但需要有两种方法。SanitizeHtmlForDisplaySanitizeHtmlForPreview,其中预览版本将具有较少的白名单规则。 - Chase Florell
Luke,你的白名单规则是什么样子的,以便实现这个目标?我想看看你得到了什么结果。 - Chase Florell

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接