keinos/parsedown-toc

Parsedown 的目录表扩展,适用于 Markdown 解析器。

v1.2.0 2023-02-19 00:56 UTC

This package is auto-updated.

Last update: 2024-09-19 04:23:06 UTC


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:
            • stringjson 可指定。 string=HTML,json=JSON。
            • 默认 string
        • 别名方法:contentsList(string $type_return)
      • setTagToc(string $tag='[tag]'):
        • 设置用户定义的 ToC Markdown 标签。如果您想使用 ToC 标签而不是 "[toc]",请在 text()body() 方法之前使用此方法。
        • 空值设置为默认 ToC 标签。
        • 自 v1.1.2 版本起可用
    • 其他方法
      • 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
  • 注意:由于这是 Parsedown 的扩展,因此您还需要下载并包含 Parsedown.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');"

示例用法

高级用法(使用 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。

参考资料