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

使用纯PHP语言,为文章自动添加目录索引

时间2023-03-26 18:27:59 提问来自 湖北省武汉市 的网友 分类创作 浏览283
```php <?php /** * 为文章自动添加目录索引 * @param string $content 文章内容,html格式字符串 * @return string 处理后的文章内容,html格式字符串 */ function get_catalog($content) { // 获取所有的h1-h6标题,$matches[1]保存了所有h1-h6标题的内容,$matches[2]保存了对应的层级。 preg_match_all('/<(h[1-6])>(.*?)<\/\1>/i', $content, $matches); // 如果没有任何一个H1-H6标题,则不生成目录。 if (!$matches[2]) return $content; // 生成目录HTML代码 $catalog = '<ul class="catalog">'; foreach ($matches[2] as $key => $value) { // 生成id属性名  将中文转换成拼音  替换特殊字符  将多个连续的 - 替换成一个 -  将开头和末尾的 - 删除  转小写  限制id属性名只能包含 a-z、0-9、_、- 这几种字符 $id = preg_replace('/[^\x{4e00}-\x{9fa5}a-zA-Z0-9]+/u', '', Pinyin($value)); $id = strtolower(preg_replace('/(^\-*)|(\-*$)/', '', str_replace('--', '-',"-$id"))); preg_match("/^[a-zA-Z0–9\-]+$/",$id,$arr); if (empty($arr)) continue; //不是a—zA—Z0—9——这几个英文数字以及——以外其他字符都会跳过不显示在目录里 // 拼装HTML代码 switch ($matches[1][$key]) { case "h2": case "H2": break; default: break; } } } return "$catalog</ul>"; } ?> <?php echo getCatalog($articleContent); ?> </div> </body></html>

点击这里,进行内容创作

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

上一篇 如何追女生 下一篇 “ 电力系统工程师”的生涯人物访谈报告