外部ファイルの<body>~</body>を抜き出して挿入

PHPでサイトを構築していれば、各ページの共通部分を使い回しできるので大変便利。

例えば、ヘッダー、フッダー、メニューなどは、全ページ共通なことが多いですが、編集が必要になった場合、全ページを編集しなくてはならない。これが共通アイテムとしてインクルードする構成にしておけば、わざわざ全ページを編集する手間が省けます。

単純に挿入するだけであれば、

  • file_get_contents('挿入ファイル名');
  • include('挿入ファイル名');
  • readfile('挿入ファイル名');

など、いろいろありますが、<body>~</body>の、HTML表示部分を抜き出したいという場合があります。

ということで、共通化するHTMLファイルの<body>~</body>を抜き出して挿入するコードの覚書

<?php
$page = file_get_contents('挿入ファイル名');
if(preg_match('!<body>\s*(.*)</body>!s', $page, $output)){
echo $output[1];
}
?>

https(SSL)ページで「file_get_contents」でエラーが出る場合は「httpsページをfile_get_contentsするとエラーになる場合の回避策」を参ください。

また、ファイルの共通化のほか、外部サイトを取得して挿入する、いわゆるスクレイピングすることも可能となります。

外部サイトのファイルを取得する場合、セキュリティ上よろしくないとされていますが『php.ini』の設定を以下のように変更します。

allow_url_fopen = On
allow_url_include = On

Web制作覚書