qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

使用纯PHP语言,为文章的h2 h3 h4自动添加目录索引,目录使用ul列表多层次展示

时间2023-03-26 18:37:57 提问来自 湖北省武汉市 的网友 分类创作 浏览415
<?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元

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 使用纯PHP语言,为文章的h2 h3 h4自动添加目录索引 下一篇 “ 电力系统工程师”的生涯人物访谈报告