ウェブスクレイピングや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>";
?>
注意点とベストプラクティス
- エラー処理: 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);
}
?>
- 大文字・小文字の扱い: メタタグ名はすべて小文字に変換されて返されます。例えば
<meta name="Author" content="John">
は、連想配列では$meta_tags['author']
となります。 - パフォーマンス考慮: 大量のURLに対して処理を行う場合、タイムアウト設定を適切に行いましょう。
<?php
// タイムアウト設定を5秒に
$context = stream_context_create(['http' => ['timeout' => 5]]);
$meta_tags = get_meta_tags('https://example.com/', false, $context);
?>
- HTTPエラー処理: この関数はHTTPエラーを直接処理しないため、拡張機能としては頑健ではありません。本格的なスクレイピングには、より高度なライブラリ(例:Guzzle、Simple HTML DOM Parser)の使用を検討しましょう。
まとめ
get_meta_tags()
は、シンプルかつ効果的にHTMLページのメタ情報を取得できるPHPの便利な関数です。SEO分析ツールやコンテンツ収集スクリプトを作成する際に特に便利です。
ただし、より高度なウェブスクレイピングやHTMLパーシングが必要な場合は、DOM操作に特化したライブラリの使用も検討すると良いでしょう。小規模なプロジェクトや簡易的なメタタグ取得には、この組み込み関数で十分対応できます。
PHP開発において、ちょっとした便利ツールとして覚えておくと、きっと役立つ場面があるはずです。