【PHP8.x】get_meta_tags関数の使い方

get_meta_tags関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

get_meta_tags関数は、指定したURLのHTMLファイルを取得し、その中に記述されているmetaタグの情報を解析して連想配列として取得する関数です。ウェブサイトの概要やキーワードといったメタデータをプログラムで自動的に収集する際に利用されます。第一引数には、解析対象となるファイルのパスまたはURLを文字列で指定します。関数が成功すると、metaタグのname属性の値をキーとし、content属性の値を値とする連想配列を返します。例えば、HTML内に<meta name="description" content="これはページの説明です">という記述があれば、返り値の配列には ['description' => 'これはページの説明です'] という要素が含まれます。URLへのアクセスに失敗した場合や、ファイル内にmetaタグが存在しない場合はfalseを返します。注意点として、この関数が解析するのはHTML文書の<head>セクション内にあり、かつname属性を持つmetaタグのみです。同じname属性を持つタグが複数存在した場合は、最後に出現したタグの値が採用されます。

構文(syntax)

1get_meta_tags(string $filename, bool $use_include_path = false): array|false

引数(parameters)

string $filename, bool $use_include_path = false

  • string $filename: メタタグを読み込むファイルパスを指定する文字列
  • bool $use_include_path = false: include_path を利用してファイルを検索するかどうかを指定する真偽値

戻り値(return)

array|false

指定されたHTMLファイルからmetaタグを解析した結果を連想配列で返します。解析に失敗した場合はfalseを返します。

サンプルコード

PHPでHTMLのmetaタグを取得する

1<?php
2
3/**
4 * HTMLファイルからmetaタグを抽出して表示するサンプルコード。
5 *
6 * このコードを実行するには、このPHPファイルと同じディレクトリに
7 * 'example.html' という名前のHTMLファイルを作成し、いくつかのmetaタグを記述してください。
8 *
9 * 例: example.html の内容
10 * <!DOCTYPE html>
11 * <html>
12 * <head>
13 *     <meta charset="UTF-8">
14 *     <meta name="description" content="これはサンプルページの説明です。">
15 *     <meta name="keywords" content="HTML, PHP, サンプル">
16 *     <meta name="author" content="Your Name">
17 *     <title>サンプルページ</title>
18 * </head>
19 * <body>
20 *     <h1>Hello, World!</h1>
21 * </body>
22 * </html>
23 */
24
25// このPHPスクリプトと同じディレクトリにある 'example.html' を指定します。
26// __DIR__ は現在のスクリプトが格納されているディレクトリの絶対パスを返します。
27$htmlFilePath = __DIR__ . '/example.html';
28
29// get_meta_tags関数を使用して、指定されたHTMLファイルからmetaタグを抽出します。
30// 戻り値は連想配列(成功時)または false(失敗時)です。
31$metaTags = get_meta_tags($htmlFilePath);
32
33// metaタグの抽出が成功したかを確認します。
34if ($metaTags === false) {
35    // 抽出に失敗した場合の処理
36    echo "エラー: '{$htmlFilePath}' からmetaタグを読み込めませんでした。\n";
37    echo "ファイルが存在するか、アクセス権があるか確認してください。\n";
38} else {
39    // 抽出に成功した場合の処理
40    echo "HTMLファイルから取得されたmetaタグ:\n";
41    // 取得したすべてのmetaタグを連想配列形式で表示します。
42    // キーはmetaタグの'name'属性(または'http-equiv'属性)の値、
43    // バリューは'content'属性の値になります。
44    var_dump($metaTags);
45
46    echo "\n個別のmetaタグにアクセスする例:\n";
47    // 特定のmetaタグの値にアクセスする例です。
48    // 配列のキーが存在するか isset() で確認してからアクセスすることが推奨されます。
49    if (isset($metaTags['description'])) {
50        echo "Description: " . $metaTags['description'] . "\n";
51    }
52    if (isset($metaTags['keywords'])) {
53        echo "Keywords: " . $metaTags['keywords'] . "\n";
54    }
55    if (isset($metaTags['author'])) {
56        echo "Author: " . $metaTags['author'] . "\n";
57    } else {
58        echo "Authorタグは見つかりませんでした。\n";
59    }
60}
61
62?>

PHPのget_meta_tags関数は、指定されたHTMLファイルから<meta>タグの情報を抽出するための機能です。主にHTMLドキュメントのヘッダ部分にある、ページの説明やキーワード、作者といったメタデータを取り出す際に利用されます。

この関数は最初の引数$filenameとしてHTMLファイルのパスを指定します。$use_include_pathtrueに設定すると、指定されたファイルがPHPのインクルードパス内にある場合でも検索されますが、通常はデフォルトのfalseで問題ありません。指定されたファイルが存在しない場合や読み込みに失敗した場合は、関数はfalseを返します。

成功した場合は、抽出された<meta>タグの情報を連想配列として返します。この配列では、<meta name="..." content="...">のようなタグの場合、name属性の値がキーとなり、content属性の値がバリューとなります。http-equiv属性を持つタグも同様に処理されます。

サンプルコードでは、__DIR__定数を使用して現在のスクリプトと同じディレクトリにあるexample.htmlファイルを指定し、get_meta_tags関数でそのファイルからメタデータを抽出しています。抽出が成功したかを確認し、var_dumpで取得したすべてのメタデータを表示しています。さらに、descriptionkeywordsといった特定のメタタグに直接アクセスしてその内容を表示する方法も示しており、isset()でタグの存在を確認している点も重要です。この関数を利用することで、HTMLファイルの外部からその内容の要約や関連情報を効率的に取得できます。

get_meta_tags関数を利用する際は、対象となるHTMLファイルのパスを正確に指定することが最も重要です。__DIR__のようなマジック定数を使って絶対パスで指定すると、スクリプトの実行環境に依存せず安全です。この関数は、ファイルの読み込みに失敗した場合やファイルが存在しない場合にfalseを返しますので、必ず戻り値を=== falseで厳密に確認し、適切なエラー処理を実装してください。取得されるのはname属性またはhttp-equiv属性を持つ<meta>タグのみで、<meta charset="...">のようなタグは取得できません。また、取得した連想配列から特定のキーの値にアクセスする際は、isset()でそのキーが存在するかを事前に確認することで、プログラムの予期せぬエラーを防ぐことができます。外部のウェブページを直接指定する用途には適していません。

関連コンテンツ