文章目录 TOC 功能
This commit is contained in:
parent
e783478dfe
commit
14ddb2fb5c
|
@ -71,4 +71,8 @@ code {
|
||||||
|
|
||||||
.friend {
|
.friend {
|
||||||
height: 80px;
|
height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
html{
|
||||||
|
scroll-behavior: smooth;
|
||||||
}
|
}
|
|
@ -136,6 +136,32 @@ function exContent($content){
|
||||||
// <a class="btn btn-secondary" role="button" href="$1" target="_blank">$2</a>';
|
// <a class="btn btn-secondary" role="button" href="$1" target="_blank">$2</a>';
|
||||||
// $content = preg_replace($pattern, $replacement, $content);
|
// $content = preg_replace($pattern, $replacement, $content);
|
||||||
|
|
||||||
|
// 文章 TOC 功能
|
||||||
|
// [0]: 完整的匹配 <h2>conTent</h2>
|
||||||
|
// [1]: 匹配中的数字 2
|
||||||
|
// [2]: 匹配中的内容 conTent
|
||||||
|
if (preg_match_all('/<h(\d)>(.*)<\/h\d>/isU', $content, $outarr)){
|
||||||
|
$toc_out = "";
|
||||||
|
$minlevel = 6;
|
||||||
|
for ($key=0; $key<count($outarr[2]); $key++) $minlevel = min($minlevel, $outarr[1][$key]);
|
||||||
|
|
||||||
|
$curlevel = $minlevel-1;
|
||||||
|
for ($key=0; $key<count($outarr[2]); $key++) {
|
||||||
|
$ta = $content;
|
||||||
|
$tb = strpos($ta, $outarr[0][$key]);
|
||||||
|
$level = $outarr[1][$key];
|
||||||
|
// $content = substr($ta, 0, $tb). "<h{$level} id=\"toc_title{$key}\">{$outarr[2][$key]}</h{$level}>". substr($ta, strlen($outarr[0][$key])+$tb);
|
||||||
|
$content = substr($ta, 0, $tb). "<a id=\"toc_title{$key}\" style=\"position:relative; top:-50px\"></a>". substr($ta, $tb);
|
||||||
|
// 用伪锚点实现链接偏移。Safari 居然不支持!!
|
||||||
|
if ($level > $curlevel) $toc_out.=str_repeat("<ol>\n", $level-$curlevel);
|
||||||
|
elseif ($level < $curlevel) $toc_out.=str_repeat("</ol>\n", $curlevel-$level);
|
||||||
|
$curlevel = $level;
|
||||||
|
$toc_out .= "<li><a href=\"#toc_title{$key}\">{$outarr[2][$key]}</a></li>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$content = "<div id=\"tableOfContents\">{$toc_out}</div>". $content;
|
||||||
|
}
|
||||||
|
|
||||||
return $content;
|
return $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue