Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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()でそのキーが存在するかを事前に確認することで、プログラムの予期せぬエラーを防ぐことができます。外部のウェブページを直接指定する用途には適していません。

PHPでURLからメタタグを取得する

1<?php
2
3/**
4 * 指定されたURLからHTMLメタタグを取得し、配列として返します。
5 *
6 * get_meta_tags関数は、指定されたファイルパスまたはURLのHTMLコンテンツから
7 * すべてのメタタグを解析し、名前-コンテンツのペアを連想配列で返します。
8 * キーワード「get meta tags from string」の意図を汲み取り、
9 * HTMLコンテンツを文字列として提供するURLからメタタグを取得する例を示します。
10 *
11 * @param string $url HTMLコンテンツを持つURL。
12 * @return array|false メタタグの連想配列、または取得に失敗した場合は false。
13 */
14function getMetaTagsFromUrl(string $url): array|false
15{
16    // get_meta_tags関数は、ローカルファイルのパスだけでなく、HTTP/HTTPS URLも扱えます。
17    // URLからHTMLコンテンツを読み込み、その中の<meta>タグを解析します。
18    $metaTags = get_meta_tags($url);
19
20    // メタタグの取得に失敗した場合(例: URLが無効、ネットワークエラーなど)
21    if ($metaTags === false) {
22        // エラーログに出力し、falseを返して呼び出し元に失敗を伝えます。
23        error_log("Failed to retrieve meta tags from URL: " . $url);
24        return false;
25    }
26
27    // 取得したメタタグの連想配列を返します。
28    return $metaTags;
29}
30
31// --- 使用例 ---
32// 実際のWebサイトのURLに置き換えてください。
33// この例では、一般的にアクセス可能なexample.comを使用しています。
34$sampleUrl = "https://www.example.com/";
35
36echo "Trying to get meta tags from: " . $sampleUrl . "\n";
37
38// 関数を呼び出してメタタグを取得します。
39$result = getMetaTagsFromUrl($sampleUrl);
40
41if ($result !== false) {
42    echo "Successfully retrieved meta tags:\n";
43    // 取得したメタタグを一覧表示します。
44    foreach ($result as $name => $content) {
45        echo "  " . htmlspecialchars($name) . ": " . htmlspecialchars($content) . "\n";
46    }
47} else {
48    echo "Failed to retrieve meta tags. Please check the URL and network connection.\n";
49}
50
51// 失敗例の確認 (存在しないURLを試す場合)
52// $invalidUrl = "https://this-url-does-not-exist-12345.com/";
53// echo "\nTrying to get meta tags from an invalid URL: " . $invalidUrl . "\n";
54// $invalidResult = getMetaTagsFromUrl($invalidUrl);
55// if ($invalidResult === false) {
56//     echo "Failed as expected for invalid URL.\n";
57// }
58
59?>

PHPのget_meta_tags関数は、指定されたURLまたはファイルパスからHTMLコンテンツを読み込み、その中に含まれる<meta>タグの情報を取得するための機能です。主にウェブページのタイトルや説明、キーワードといったメタデータをプログラムで扱う際に利用されます。

この関数は、最初の引数$filenameに取得対象のURLまたはローカルファイルのパスを指定します。サンプルコードでは、この引数にWebサイトのURLを渡すことで、そのURLからHTMLコンテンツを読み込み、メタタグを解析しています。オプションの$use_include_path引数は、ファイルパスを解決する際の検索パスにPHPのinclude_pathを含めるかどうかを決定しますが、URLを指定する場合は通常影響しません。

処理が成功すると、メタタグの名前をキー、コンテンツを値とする連想配列を返します。例えば、<meta name="description" content="ウェブサイトの説明">というタグがあれば、['description' => 'ウェブサイトの説明']のような形式でデータが返されます。もし指定されたURLが存在しない場合や、ファイルの読み込みに失敗した場合は、戻り値としてfalseが返され、取得に失敗したことを示します。

サンプルコードは、get_meta_tags関数をより扱いやすくするためのgetMetaTagsFromUrlというラッパー関数を示しています。この関数はURLを引数に取り、内部でget_meta_tagsを呼び出し、結果を返すとともに、取得失敗時にはエラーログに記録するようになっています。これにより、ウェブサイトのメタデータを効率的に取得し、その内容を画面に表示する一連の流れを学ぶことができます。エラーハンドリングも含まれており、堅牢なコードの書き方を理解する上でも役立ちます。

get_meta_tags関数は、HTMLコンテンツを直接文字列として解析するのではなく、指定されたファイルパスやURLから内容を読み込んでメタタグを抽出します。そのため、キーワード「get meta tags from string」の意図を汲む場合は、HTMLコンテンツを返すURLを指定して利用する点を理解しましょう。

関数はネットワークエラーやURLが無効な場合など、失敗時にはfalseを返します。したがって、戻り値がfalseでないかを必ず確認し、エラーハンドリングを適切に行うことが重要です。また、取得したメタタグの内容を画面に表示する際は、クロスサイトスクリプティング(XSS)脆弱性を防ぐため、htmlspecialchars関数などでエスケープ処理を施してください。外部URLへのアクセスはネットワーク状況に依存し、PHPの設定allow_url_fopenが有効である必要があります。

PHPでURLからメタタグを取得する

1<?php
2
3/**
4 * 指定されたURLからHTMLのメタタグを取得し、連想配列として表示します。
5 *
6 * この関数は、主に<head>セクション内にある<meta>タグの中から、
7 * 'name'属性と'content'属性を持つものを解析します。
8 *
9 * @param string $url メタタグを取得する対象のURL。例: 'https://www.example.com/'
10 * @return void
11 */
12function fetchAndDisplayMetaTagsFromUrl(string $url): void
13{
14    echo "URL: {$url}\n";
15
16    // get_meta_tags() 関数を使用して、指定されたURLからメタタグを取得します。
17    // ネットワークエラーや無効なURLの場合、falseを返します。
18    $metaTags = get_meta_tags($url);
19
20    if ($metaTags === false) {
21        echo "エラー: '{$url}' からメタタグを取得できませんでした。\n";
22        echo "URLが正しいか、またはアクセス可能か確認してください。\n";
23        return;
24    }
25
26    echo "--- 取得したメタタグ ---\n";
27    if (empty($metaTags)) {
28        echo "このURLには、name属性とcontent属性を持つメタタグが見つかりませんでした。\n";
29    } else {
30        foreach ($metaTags as $name => $content) {
31            // メタタグの名前(name属性の値)と内容(content属性の値)を表示します。
32            echo "{$name}: {$content}\n";
33        }
34    }
35    echo "------------------------\n\n";
36}
37
38// --- サンプル使用例 ---
39
40// 1. 正常なURLからメタタグを取得する例
41$sampleUrl1 = 'https://www.php.net/';
42fetchAndDisplayMetaTagsFromUrl($sampleUrl1);
43
44// 2. 存在しない、またはアクセスできないURLの例(エラーハンドリングを確認)
45// このURLは通常存在しないため、エラーメッセージが表示されるはずです。
46$sampleUrl2 = 'https://this-is-a-non-existent-domain-for-testing-12345.com/';
47fetchAndDisplayMetaTagsFromUrl($sampleUrl2);
48
49// 3. メタタグが少ない、または特定のメタタグがないページの例
50// (サイトによってはdescriptionやkeywordsがない場合もあります)
51$sampleUrl3 = 'https://www.google.com/';
52fetchAndDisplayMetaTagsFromUrl($sampleUrl3);
53
54?>

PHPのget_meta_tags関数は、指定されたURLのHTMLドキュメントから<meta>タグの情報を抽出するための機能です。主にWebページのタイトルや説明、キーワードといったSEOに関連する情報などをプログラムで取得する際に利用されます。

この関数は、最初の引数$filenameにメタタグを読み込みたいURL(例えば https://www.example.com/)を指定します。成功すると、<meta name="..." content="...">のような形式のタグから、name属性の値をキー、content属性の値を値とする連想配列を返します。例えば、<meta name="description" content="これはサンプルページです">というタグがあれば、配列の要素として 'description' => 'これはサンプルページです' が含まれます。もし何らかの理由でメタタグの取得に失敗した場合や、URLが無効な場合は false を返します。

提供されたサンプルコードでは、fetchAndDisplayMetaTagsFromUrl関数がこのget_meta_tagsを利用して、指定されたURLからメタタグを取得し表示しています。関数がfalseを返した場合には、エラーメッセージを表示して処理が失敗したことを通知するなど、堅牢なエラーハンドリングが実装されています。これにより、ネットワークの問題や存在しないURLを指定した場合でも、適切にユーザーに状況を伝えることができます。複数の異なるURLでテストすることで、正常なケースだけでなく、エラーが発生するケースや、メタタグが少ないページの挙動も確認できるようになっています。

このサンプルコードは、PHPのget_meta_tags関数を使用してURLからHTMLのメタタグを取得する基本的な使い方を示しています。注意点として、本関数はリファレンス上で第一引数が$filenameと記載されていますが、php.iniallow_url_fopenが有効であれば、サンプルコードのようにURLを直接指定して外部サイトからメタタグを取得できます。

取得できるメタタグは<meta name="..." content="...">形式のものに限定され、property属性を持つOGPタグやcharsetのような属性のみのタグは解析対象外です。取得されるキーはname属性の値が小文字に変換されます。

ネットワーク通信が発生するため、指定されたURLが存在しない、アクセスできない、またはネットワークエラーが発生した場合にはfalseが返されます。そのため、サンプルコードのように戻り値を必ずチェックし、エラーハンドリングを適切に行うことが重要です。大量のURLを処理する際は、パフォーマンスや対象サーバーへの負荷も考慮してください。

関連コンテンツ

関連プログラミング言語