sc0/parsedown

Markdown 解析器。

2.1.0 2017-04-24 17:39 UTC

README

Build Status Total Downloads

PHP中的更优秀的Markdown解析器

演示 | 性能比较 | 测试 | 文档

功能

安装

安装composer包

示例

use Sc\Parsedown\Parsedown;

$Parsedown = new Parsedown();

echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>

更多示例请参考维基这个视频教程

带有重命名标签/属性的复杂示例

use Sc\Parsedown\Parsedown;

$replacements = [
    'p' => [
        'tag_name' => 'div', // rename <p> to <div>
        'class' => 'paragraph', // add class="paragraph" attribute to div
        'data-foo' => 'bar', // add data-foo="bar" attribute to div
    ],
    'em' => [
        'class' => 'em', // don't rename tag, just add class="em" attribute to em
    ],
];
$Parsedown = new Parsedown($replacements);

echo $Parsedown->text('Hello _Parsedown_!'); # prints: <div class="paragraph" data-foo="bar">Hello <em class="em">Parsedown</em>!</div>

问题

Parsedown是如何工作的?

它试图像人类一样读取Markdown。首先,它会查看行。它对行的开始方式感兴趣。这有助于它识别块。例如,如果一行以-开头,那么它可能属于一个列表。一旦它识别出块,它就会继续到内容。在读取的过程中,它会注意特殊字符。这有助于它识别内联元素(或内联)。

我们称这种方法为“基于行的”。我们相信Parsedown是第一个采用这种方法进行Markdown解析的解析器。自从Parsedown发布以来,其他开发者也采用了相同的方法,在PHP和其他语言中开发了其他Markdown解析器。

它与CommonMark兼容吗?

它通过了大部分的CommonMark测试。大多数未通过测试的情况都涉及到相当不常见的情况。尽管如此,随着CommonMark的成熟,兼容性应该会提高。

谁在使用它?

phpDocumentorOctober CMSBolt CMSKirby CMSGrav CMSStatamic CMSHerbie CMSRaspberryPi.org更多

我如何提供帮助?

使用它,给它加星标,分享它,如果您愿意,还可以捐赠