PHPで外部ファイルを読み込み、bodyタグ内のhtmlソースだけ取得する方法

PHPで同一サーバー内にある外部ファイルを読み込み、任意のページに埋め込みたい。
その際、外部ファイルのbodyタグ内にあるhtmlソースのみ取得したい。
本記事ではこのような悩みを解決。
実装方法について解説します。
実装コード
<?php $file = file_get_contents('外部ファイルのURL');
// body内だけ取り出す
if (preg_match('!<body>\s*(.*)</body>!s', $file, $output)) {
echo $output[1];
}
?>
外部ファイルのbodyタグ内htmlソースを読み込むPHPコードです。
file_get_contents()
で外部ファイルの絶対パスを取得。
preg_match
を使い、bodyタグ内を指定。
if文で上記指定にマッチした部分のhtmlソースを取得するという条件式を記述すればOKです。
以上で実装完了です。
任意のタグ・クラス・IDで囲われたソースだけ取得
<?php $file = file_get_contents('外部ファイルのURL');
// fileクラスのdivタグで囲われたソースだけ取り出す
if (preg_match('!<div class="file">\s*(.*)</div>!s', $file, $output)) {
echo $output[1];
}
?>
bodyタグではなく、任意のタグ・クラス・IDで囲われたソースだけ取得したい場合、前章で紹介したコード例を修正。
preg_match
のbodyタグを任意のタグ・クラス・IDに変更してあげればOK。
上記ソース例だどfileクラスのdivタグで囲われたソースだけ取り出す記述になってます。
まとめ
本記事で紹介した方法は同一サーバー内の外部ファイルを取得するに限ります。
以上で解説を終わります。
目次