[PHP]get_meta_tags 関数完全ガイド – ウェブページのメタ情報を簡単に取得

PHP

ウェブスクレイピングやSEO分析ツールを開発する際に、外部ウェブページのメタタグ情報を取得したいことはありませんか?PHP には get_meta_tags() という便利な組み込み関数があり、これを使えばHTMLページのメタタグ情報を簡単に配列として取得できます。今回はこの便利な関数について詳しく解説します。

get_meta_tags とは?

get_meta_tags() は、指定されたHTMLファイルやウェブページからメタタグの内容を解析し、連想配列として返してくれる PHP の関数です。特に name 属性と content 属性を持つメタタグを対象とし、name をキー、content を値として配列を構築します。

基本的な使い方

<?php
// ウェブページからメタタグを取得
$meta_tags = get_meta_tags('https://example.com/');

// 結果を表示
print_r($meta_tags);
?>

この関数は次のような形式の出力を返します:

Array
(
    [description] => サイトの説明文がここに表示されます
    [keywords] => PHP, メタタグ, ウェブ開発
    [author] => 開発者名
)

関数のパラメータ

get_meta_tags(string $filename, bool $use_include_path = false): array|false
  • $filename: 解析するファイルのパスまたはURL
  • $use_include_path: include_path を使用するかどうか(オプション、デフォルトは false)

実用的な活用例

1. SEO情報の収集

競合サイトや自社サイトのSEO状況を分析する際に使えます:

<?php
$urls = [
    'https://competitor1.com/',
    'https://competitor2.com/',
    'https://mysite.com/'
];

foreach ($urls as $url) {
    echo "<h3>$url のメタ情報</h3>";
    $tags = get_meta_tags($url);
    
    echo "ディスクリプション文字数: " . strlen($tags['description'] ?? '') . "<br>";
    echo "キーワード: " . ($tags['keywords'] ?? 'なし') . "<br>";
    echo "その他のメタタグ: " . count($tags) . "個<br>";
}
?>

2. OGP(Open Graph Protocol)情報の取得

SNSシェア時に表示される情報を確認する例:

<?php
$url = 'https://example.com/article.html';
$meta_tags = get_meta_tags($url);

$og_data = [];
foreach ($meta_tags as $key => $value) {
    if (strpos($key, 'og:') === 0) {
        $og_data[substr($key, 3)] = $value;
    }
}

echo "<h2>OGP情報</h2>";
echo "タイトル: " . ($og_data['title'] ?? 'なし') . "<br>";
echo "画像: " . ($og_data['image'] ?? 'なし') . "<br>";
echo "説明: " . ($og_data['description'] ?? 'なし') . "<br>";
?>

注意点とベストプラクティス

  1. エラー処理: URLが存在しない場合や接続エラーが発生した場合、この関数は false を返します。実装時には必ずエラーチェックを行いましょう。
<?php
$url = 'https://non-existent-site.com/';
$meta_tags = @get_meta_tags($url); // エラー制御演算子を使用

if ($meta_tags === false) {
    echo "メタタグの取得に失敗しました。URLを確認してください。";
} else {
    print_r($meta_tags);
}
?>
  1. 大文字・小文字の扱い: メタタグ名はすべて小文字に変換されて返されます。例えば <meta name="Author" content="John"> は、連想配列では $meta_tags['author'] となります。
  2. パフォーマンス考慮: 大量のURLに対して処理を行う場合、タイムアウト設定を適切に行いましょう。
<?php
// タイムアウト設定を5秒に
$context = stream_context_create(['http' => ['timeout' => 5]]);
$meta_tags = get_meta_tags('https://example.com/', false, $context);
?>
  1. HTTPエラー処理: この関数はHTTPエラーを直接処理しないため、拡張機能としては頑健ではありません。本格的なスクレイピングには、より高度なライブラリ(例:Guzzle、Simple HTML DOM Parser)の使用を検討しましょう。

まとめ

get_meta_tags() は、シンプルかつ効果的にHTMLページのメタ情報を取得できるPHPの便利な関数です。SEO分析ツールやコンテンツ収集スクリプトを作成する際に特に便利です。

ただし、より高度なウェブスクレイピングやHTMLパーシングが必要な場合は、DOM操作に特化したライブラリの使用も検討すると良いでしょう。小規模なプロジェクトや簡易的なメタタグ取得には、この組み込み関数で十分対応できます。

PHP開発において、ちょっとした便利ツールとして覚えておくと、きっと役立つ場面があるはずです。

タイトルとURLをコピーしました