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エンコード方法について紹介します。
ファイルアップロードの実装手順—HTMLとPHPの基礎から学ぶ
2023.04.17
PHPを使ったファイルアップロード機能の実装方法を解説します。HTMLのフォーム設定から、PHPでのファイル受け取りと保存処理まで、基本的な流れを具体的なコード例とともに紹介。
PHPとPerlを使ったファイルアップロードとサーバー処理の基本
2007.11.24
ファイルアップロードフォームの作成から、PHPやPerlでのファイルの受け取り、保存方法まで、基本的な手順を解説します。
highlight.js 入門 ― CDN を活用したシンタックスハイライトの基本ガイド
2025.06.05
highlight.js を使ったシンタックスハイライトの導入方法を具体的なコード例とともに紹介します。CDN 経由でライブラリを読み込み、HTML コード内の <pre> と <code> タグを利用して、正確な言語指定とスタイル適用を実現する手法を分かりやすく解説。初心者でもすぐに実装できる内容となっています。