技術資料

PHPで実現するHTML目次自動生成:見出しタグ抽出と目次リンクの出力

作成日:2025.07.31

PHPを活用して、HTML文書から見出しタグを抽出し、目次リンクを自動生成する方法を解説します。見出しに自動でIDを付与する仕組みや、抽出した情報をリスト形式で出力するサンプルコードを紹介。効率的なドキュメント構造の整備とSEO対策に繋がる実践的な手法を、わかりやすくまとめています。

見出しタグ(<h1><h6>)が適切に使用されたブログ記事などのHTML文書の本文から、各見出しを抽出し、目次を自動生成するためのコードをPHPで書いてみました。

なぜ目次が必要なのか

目次は、長い記事や複雑な内容を持つ文書において、読者が必要な情報を素早く見つけるために非常に役立ちます。特に、技術的なドキュメントやチュートリアルでは、目次があることで読者は興味のあるセクションに直接アクセスできるため、時間の節約になります。

また、目次はSEO(検索エンジン最適化)にも寄与します。検索エンジンは、目次を通じて文書の構造を理解しやすくなり、結果として検索結果での表示が向上する可能性があります。

PHPでの目次生成コード

以下は、PHPを使用してHTML文書から目次を生成するコードの例です。このコードは、文書内の見出しタグを検出し、それらをリスト形式で返します。

また、本文内の見出しに自動的にIDを付与し、目次から直接リンクできるようにします。


function extractHeadingsFromBody($body)
{
	$headings = [];
	$modified_body = $body;
	preg_match_all('/<h([1-6])>(.*?)<\/h[1-6]>/i', $body, $matches);
	if(isset($matches[0])) {
		$id_cnt = 1;
		foreach($matches[0] as $key => $heading) {
			$level = (int)$matches[1][$key];
			$text = strip_tags($matches[2][$key]);
			$id = 'heading-' . $id_cnt;
			$headings[] = [
				'level' => $level,
				'text' => $text,
				'id' => $id
			];
			// IDを付与した新しい見出しに置換
			$new_heading = "<h{$level} id=\"{$id}\">{$matches[2][$key]}</h{$level}>";
			$modified_body = str_replace($heading, $new_heading, $modified_body);
			$id_cnt++;
		}
	}
	return [$headings, $modified_body];
}
// 使用例
$body = '<h1>はじめに</h1><p>これは目次生成のテストです。</p><h2>目次の重要性</h2><p>目次は読者にとって非常に役立ちます。</p><h3>詳細な情報</h3><p>目次があることで、必要な情報をすぐに見つけることができます。</p>';
[$headings, $modified_body] = extractHeadingsFromBody($body);

このコードの extractHeadingsFromBody 関数に、HTML文書の本文を渡すと、見出しのリストとIDを付与した新しい本文が返されます。見出しはレベル(1~6)とテキスト、IDを含む連想配列として格納されます。

見出しの出力には、 foreach ループを使用して $headings を順に処理すればOK。

この記事を書いた人

※上が私です。

奈良市を拠点に、26年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。

これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。

【制作会社・企業様向けサポート】
  • 専任エンジニアのいない企業様に対するシステム面の不安を解消
  • 柔軟な契約形態や短納期での対応により、急なニーズにも迅速にサポート
  • システムの企画段階から運用まで、ワンストップでのサービスを提供

Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。

ぜひ、プロフィールWeb制作会社様向け業務案内一般企業様向け業務案内もご覧くださいね。

Google検索でリッチリザルトを表示するパンくずリストの設定方法

2023.04.26

Googleの検索結果にパンくずリストを表示させるための構造化データの設定方法を解説します。JSON-LD形式でパンくずリストを設定する方法と、PHPでのURLエンコード方法について紹介します。

Google構造化データ HTML PHP

ファイルアップロードの実装手順—HTMLとPHPの基礎から学ぶ

2023.04.17

PHPを使ったファイルアップロード機能の実装方法を解説します。HTMLのフォーム設定から、PHPでのファイル受け取りと保存処理まで、基本的な流れを具体的なコード例とともに紹介。

HTML PHP

PHPとPerlを使ったファイルアップロードとサーバー処理の基本

2007.11.24

ファイルアップロードフォームの作成から、PHPやPerlでのファイルの受け取り、保存方法まで、基本的な手順を解説します。

HTML Perl PHP

highlight.js 入門 ― CDN を活用したシンタックスハイライトの基本ガイド

2025.06.05

highlight.js を使ったシンタックスハイライトの導入方法を具体的なコード例とともに紹介します。CDN 経由でライブラリを読み込み、HTML コード内の <pre> と <code> タグを利用して、正確な言語指定とスタイル適用を実現する手法を分かりやすく解説。初心者でもすぐに実装できる内容となっています。

CSS HTML JavaScript

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP