erusev / parsedown
Markdown 解析器。
Requires
- php: ^7.1||^8.0
- ext-mbstring: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0.0
- infection/infection: ^0.25.0
- phpunit/phpunit: ^9.3.11||^8.5.21||^7.5.20
- roave/infection-static-analysis-plugin: ^1.10.0
- vimeo/psalm: ^4.10.0
- dev-master
- 2.0.x-dev
- v2.0.0-beta-1
- dev-1.8.x-beta / 1.8.x-dev
- 1.8.0-beta-7
- v1.8.0-beta-6
- 1.8.0-beta-5
- 1.8.0-beta-4
- 1.8.0-beta-3
- 1.8.0-beta-2
- 1.8.0-beta-1
- 1.7.x-dev
- 1.7.4
- 1.7.3
- v1.7.2
- 1.7.1
- 1.7.0
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- 1.0.0-rc.5
- 1.0.0-rc.4
- 1.0.0-rc.3
- 1.0.0-rc.2
- 1.0.0-rc.1
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.3
- 0.8.2
- 0.8.1
- 0.8.0
- 0.7.7
- 0.7.6
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.0
- 0.5.0
- 0.4.8
- 0.4.7
- 0.4.6
- 0.4.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.1
- 0.2.0
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-test/shepherd-psalm
This package is auto-updated.
Last update: 2024-09-08 07:15:44 UTC
README
Parsedown
Better Markdown Parser in PHP — 演示。
功能
- 单文件
- 无依赖
- 超快
- 可扩展
- GitHub 风格
- 测试版本 5.3 到 7.3
- Markdown Extra 扩展
安装
安装 composer 包
composer require erusev/parsedown
或下载最新发布版 并包含 Parsedown.php
示例
$Parsedown = new Parsedown(); echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>
您还可以仅解析行内 Markdown
echo $Parsedown->line('Hello _Parsedown_!'); # prints: Hello <em>Parsedown</em>!
安全
Parsedown 能够在生成的 HTML 中转义用户输入。此外,Parsedown 还会对由 Markdown 语法本身引入的额外脚本向量(例如脚本链接目标)进行清理。
要告知 Parsedown 它正在处理不受信任的用户输入,请使用以下
$Parsedown->setSafeMode(true);
如果您想允许在不受信任的用户输入中包含 HTML,但仍然希望输出免于 XSS,建议您使用允许将 HTML 标签列入白名单的 HTML 清理器,如 HTML Purifier。
在这两种情况下,您都应强烈考虑采用多层次防御措施,例如 部署内容安全策略(一种浏览器安全功能),以确保即使攻击者发现上述第一道防线中的漏洞,您的页面也可能保持安全。
安全模式在使用 Parsedown 扩展时并不一定能产生安全的结果。应单独评估扩展以确定其针对 XSS 的具体安全性。
转义 HTML
警告:此方法无法防止 XSS!
如果您想在受信任的输入中转义 HTML,可以使用以下方法
$Parsedown->setMarkupEscaped(true);
请注意,这仍然允许用户插入不安全的脚本向量,例如 [xss](javascript:alert%281%29)
。
问题
Parsedown 是如何工作的?
Parsedown 尝试像人类一样读取 Markdown。首先,它查看行。它关注行的起始方式。这有助于它识别块。例如,如果一行以 -
开头,那么它可能属于列表。一旦识别出块,它就继续到内容。在阅读时,它还会注意特殊字符。这有助于它识别行内元素(或内联元素)。
我们将这种方法称为“基于行”。我们相信 Parsedown 是第一个使用此方法的 Markdown 解析器。自 Parsedown 发布以来,其他开发人员已使用相同的方法在 PHP 和其他语言中开发了其他 Markdown 解析器。
它符合 CommonMark 规范吗?
它通过了大多数的CommonMark测试。大多数未通过测试的情况都是相当罕见的。然而,随着CommonMark的成熟,兼容性应该会提高。
谁在使用它?
Laravel框架,Bolt CMS,Grav CMS,Herbie CMS,Kirby CMS,October CMS,Pico CMS,Statamic CMS,phpDocumentor,RaspberryPi.org,Symfony Demo以及更多。
我如何帮助?
使用它,给它打星,分享它,如果你觉得慷慨,还可以捐赠。
我还应该知道什么?
我还制作了Nota——一个专为本地Markdown文件设计的笔记应用。