原理
先解析markdown为HTML, 然后解析出h1-h10标签, 根据h标签的前后大小, 决定ul的层级, 以此生成ul序列的嵌套
- 如果当前H标签和前面H标签相同, 则生成
<li></li>
, - 如果比前面的大, 则生成
<ul>
- 如果比前面的小, 生成
</ul><ul><li></li>
- 如果比前面的小, 生成
上手
- 选择一个markdown Parser库, 将markdown解析
$file为文件路径, $docs为解析后的html字串
1 | $content = file_get_contents($file); |
- 解析DOM, 根据H标签的前后顺序, 生成TOC
1 | $dom = new \DOMDocument(); |
- 渲染页面
$docs为html主体内容
$toc为生成的目录, 形如1
2
3
4
5
6
7
8
9<ul>
<li></li>
<ul>
<li></li>
<li></li>
</ul>
<li></li>
<li></li>
</ul>