使用纯PHP语言,为文章的h2 h3 h4自动添加目录索引,目录使用ul列表多层次展示
<?php
//获取文章内容
$content = '<h2>一、标题1</h2> <p>内容1</p><h3>1.1 小标题11</h3><p>内容11</p><h4>1.1.1 小小标题111</h4><p>内容111</p><h3>1.2 小标题12</h3><p>内容12</p><h2>二、标题2</h2><p>内容2 </p><h3 > 2.1 小标题21 </ h3 >< p > 内容21 </ p >< h4 > 2. 1 . 1 小小标题211 </ h4 >< p > 内容211 </ p >';
//正则表达式匹配所有的H*,并且把匹配到的结果存入$matches数组中
$pattern = "/<[H| h]\d.*?>(.*?)<\/[H| h]\d.*?/";
preg_match_all($pattern, $content, $matches);
//循环处理匹配到的数据,生成目录HTML代码
$menu = '';
for ($i=0; $i < count($matches[0]); $i++) {
//如果是H2,则层级为一级目录;如果是H3,则层级为二级目录;以此类推。
switch (substr($matches[0][$i], 0, 3)) {
case '<h2': //一级目录
if ($menu != '') { //如果不是最开始的一条记录(即不是最外层UL的LI元素),就要在前一个LI元素后闭合UL。
$menu .= " </ul></li>" ;
}
$menu .= "<li>" . trim(strip_tags($matches[0][$i])) ."<ul>" ; //生成LI元素并加上UL子元素。
break;
case '<h3': //二级目录
if ($menu != '') { //如果不是最开始的一条记录(即不是最外层UL的LI元
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!