keinos / parsedown-toc
Parsedown 的目录表扩展,适用于 Markdown 解析器。
v1.2.0
2023-02-19 00:56 UTC
Requires
- php: >=5.3.0
- ext-mbstring: *
- erusev/parsedown: ^1.7
README
Parsedown ToC 扩展
列出 Parsedown 的目录表扩展,详见 Parsedown。
此 简单的 PHP 文件 扩展了 Parsedown Vanilla / Parsedown Extra,可以从给定的 Markdown 文本中生成标题索引列表(即目录表或 ToC)。
composer require keinos/parsedown-toc
$ cat ./parse_sample.php <?php require_once __DIR__ . '/vendor/autoload.php'; // Sample Markdown with '[toc]' tag included $text_markdown = file_get_contents('SAMPLE.md'); $Parsedown = new \ParsedownToC(); // Parses '[toc]' tag to ToC if exists $html = $Parsedown->text($text_markdown); echo $html . PHP_EOL;
$ cat ./SAMPLE.md [toc] --- # One Something about One ## Two Something about Two # One2 Something about One2
$ php ./parse_sample.php <div id="toc"><ul> <li><a href="#One">One</a><ul> <li><a href="#Two">Two</a></li> </ul> </li> <li><a href="#One2">One2</a></li> </ul></div> <hr /> <h1 id="One" name="One">One</h1> <p>Something about One</p> <h2 id="Two" name="Two">Two</h2> <p>Something about Two</p> <h1 id="One2" name="One2">One2</h1> <p>Something about One2</p>
使用 toc()
方法,您可以获取目录表。
<?php // Parse body and ToC separately require_once __DIR__ . '/vendor/autoload.php'; $text_markdown = file_get_contents('SAMPLE.md'); $Parsedown = new \ParsedownToC(); $body = $Parsedown->body($text_markdown); $toc = $Parsedown->toc(); echo $toc . PHP_EOL; // Table of Contents in <ul> list echo $body . PHP_EOL; // Main body
- 主类:
ParsedownToC()
- 参数:无
- 方法
text(string $text)
:- 返回解析后的内容,同时解析
[toc]
标签。 - 必需参数
$text
:要解析的 Markdown 字符串。
- 返回解析后的内容,同时解析
body(string $text)
:- 返回解析后的内容,不解析
[toc]
标签。 - 必需参数
$text
:要解析的 Markdown 字符串。
- 返回解析后的内容,不解析
toc([string $type_return='string'])
:- 返回目录表,可以是 HTML 或 JSON 格式。
- 可选参数
$type_return
:string
或json
可指定。string
=HTML,json
=JSON。- 默认
string
- 别名方法:
contentsList(string $type_return)
setTagToc(string $tag='[tag]')
:- 设置用户定义的 ToC Markdown 标签。如果您想使用 ToC 标签而不是 "
[toc]
",请在text()
或body()
方法之前使用此方法。 - 空值设置为默认 ToC 标签。
- 自 v1.1.2 版本起可用
- 设置用户定义的 ToC Markdown 标签。如果您想使用 ToC 标签而不是 "
- 其他方法
Parsedown
和/或Parsedown Extend
的所有公共方法均可使用。
- 注意:自 v1.1.0 版本起,旧的别名类:
Extension()
已弃用。
在线演示
安装
通过 Composer
如果您熟悉 composer,PHP 的包管理器,那么可以按以下方式安装:
# Current stable composer require keinos/parsedown-toc # Latest composer require keinos/parsedown-toc:dev-master
- 用法:请参阅 示例项目
手动安装(下载脚本)
您可以从以下 URL 下载 'Extension.php' 文件。将其放置在任何您想要包含的位置。
https://KEINOS.github.io/parsedown-extension_table-of-contents/Extension.php
# Download via cURL
curl -O https://KEINOS.github.io/parsedown-extension_table-of-contents/Extension.php
# Download via PHP php -r "copy('https://KEINOS.github.io/parsedown-extension_table-of-contents/Extension.php', './Extension.php');"
示例用法
- 请参阅:./samples/
高级用法(使用 Parsedown Extra)
自 Parsedown ToC 扩展 v1.1.1 版本起,您可以使用 锚标识符 来设置 Parsedown Extra。
使用此功能,您可以指定您喜欢的锚名称。如果标题使用 UTF-8(而不是 ASCII)编写并且要使其可读,这非常有用。例如,在页面中放置“返回”链接。
# SampleHead1 {#self-defined-head1} Sample text of head 1 --- [Link back to header 1](#self-defined-head1)
使用上述 Markdown 生成的目录表将如下所示。请注意,锚已更改为指定的锚。
<ul> <li><a href="#self-defined-head1">SampleHead1</a></li> </ul>
- 请注意,您还需要引入Parsedown Extra。
参考资料
- 仓库
- 源代码:https://github.com/KEINOS/parsedown-extension_table-of-contents @ GitHub
- 存档包:https://packagist.org.cn/packages/keinos/parsedown-toc @ Packagist
- 支持
- Parsedown的Wiki @ GitHub
- 此扩展的问题 @ GitHub
- Parsedown的问题 @ GitHub
- Parsedown Extra的问题 @ GitHub
- 作者
- KEINOS及贡献者 @ GitHub
- 许可证