首页 > 解决方案 > markdown="1" 在 p 标签内不起作用

问题描述

我正在使用这一行<p id="article-content" markdown="1" >## Download tarball </p>,并且得到与 HTML 相同的文本。

例子

任何帮助将不胜感激。

标签: htmlmarkdown

解决方案


markdown="1"是改变 Markdown 解析器行为的一种常见方法,尽管它是非标准的。具体来说,标准 Markdown 会忽略包裹在块级 HTML 标记中的 Markdown 语法。启用适当的扩展后,将markdown="1"作为属性添加到包装 HTML 标记将指示 Markdown 解析器不要忽略标记内的 Markdown 语法。但是,您需要使用包含对该功能的支持的 Markdown 实现,并在默认情况下未启用该功能时启用该功能。

例如,PHP Markdown Extra以这种方式记录该功能:

Markdown Extra 为您提供了一种将 Markdown 格式的文本放入任何块级标签中的方法。您可以通过将markdown属性添加到具有值的标签来做到这一点1——它给出了markdown="1"——如下所示:

<div markdown="1">
This is *true* markdown text.
</div>

markdown="1"属性将被剥离,并且<div>'s 的内容将从 Markdown 转换为 HTML。最终结果将如下所示:

<div>

<p>This is <em>true</em> markdown text.</p>

</div>

请注意,Markdown 解析器会删除该markdown="1"属性,因为它不是有效的 HTML 属性。它只对一些“扩展”的 Markdown 解析器有意义。

为了完整起见,原始的 Markdown 规则解释了在 HTML 中包装时会忽略 Markdown 语法:

请注意,Markdown 格式化语法不会在块级 HTML 标记中处理。例如,您不能*emphasis* 在 HTML 块中使用 Markdown 样式。

既然如此,下面的 Markdown:

<div>
This is *true* markdown text.
</div>

通过 Markdown 解析器时将生成以下 HTML:

<div>
This is *true* markdown text.
</div>

推荐阅读