get_meta_tags関数の基本的な構文は次のとおりです。
array get_meta_tags ( string $filename )
この関数はファイルパス(またはURL)を取得し、その中のすべてのファイルを解析しますラベル。返された結果は連想配列で、配列のキーはメタタグの名前またはプロパティプロパティで、値は対応するコンテンツプロパティです。
たとえば、次のHTMLの例を考えてみましょう。
<html>
<head>
<meta name="description" content="これはテストページです">
<meta name="keywords" content="PHP, HTML, meta">
<meta property="og:title" content="Open Graph Title">
</head>
<body>
<!-- ページコンテンツ -->
</body>
</html>
get_meta_tagsでこのHTMLファイルを解析した後、返された配列は次のとおりです。
array(
'description' => 'これはテストページです',
'keywords' => 'PHP, HTML, meta',
'og:title' => 'Open Graph Title'
)
get_meta_tags関数を解析する場合、名前とプロパティプロパティのみが注意を払われ、 HTTP-Equiv属性のタグは無視されます。 HTMLに持っている場合、タグはget_meta_tagsによって解析されません。
HTTP-Equiv属性のタグを解析する必要がある場合は、 Domdocumentなどのより強力なHTMLパーサーを使用してすべてを取得することを検討できます。タグとそのコンテンツ。
$doc = new DOMDocument();
@$doc->loadHTMLFile('yourfile.html');
$metas = $doc->getElementsByTagName('meta');
foreach ($metas as $meta) {
$name = $meta->getAttribute('name');
$content = $meta->getAttribute('content');
echo "$name: $content\n";
}
この方法は、HTTP-Equivを含むすべてを解析できますラベル。
URLが渡されると、 GET_META_TAGS機能が特定の文字エンコーディング(UTF-8またはGB2312など)を正しく解析できない場合があります。 HTMLファイルのエンコードがPHPのデフォルトエンコードと一致しない場合、解析エラーが発生する可能性があります。
最初にHTMLコンテンツをMB_CONVET_ENCODING関数を介してエンコードする正しい文字に変換し、 get_meta_tagsを呼び出すことができます。
$html = file_get_contents('yourfile.html');
$html = mb_convert_encoding($html, 'UTF-8', 'auto');
file_put_contents('tempfile.html', $html);
$metaTags = get_meta_tags('tempfile.html');
print_r($metaTags);
これにより、解析時にHTMLコンテンツが正しくエンコードされるようにすることができます。
いくつかのWebページタグはJavaScriptを介して動的にロードされます。 get_meta_tags関数は、HTMLファイルの静的コンテンツのみを読み取り、JavaScriptを実行しないため、これらの動的なコンテンツを解析することはできません。
動的に生成されたHTMLコンテンツの場合、ブラウザや操り人形師などのブラウザオートメーションツールを使用して、ブラウザの動作をシミュレートし、最終レンダリングされたHTMLを取得することをお勧めします。この時点で、 get_meta_tagsを使用して、レンダリングされたHTMLを抽出および解析できます。
HTMLでは、タグと属性名はケース非感受性です。ただし、 get_meta_tags関数によって返される配列では、通常、キーは小文字です。 HTMLで大文字を使用する場合、 、 get_meta_tagsは引き続き説明(小文字)に分類されます。
返されたメタタグがケースに敏感である必要がある場合、それは手動で統合形式に変換するか、解析されたデータで必要な処理を直接実行することができます。
$metaTags = get_meta_tags('yourfile.html');
$metaTags = array_change_key_case($metaTags, CASE_LOWER);
着信ファイルパスが間違っている場合、またはファイル自体がそれを持っていない場合タグ、 get_meta_tagsは空の配列を返します。現時点では、HTMLファイル形式が標準化されていないか、ファイルパスがアクセスできないためかもしれません。
ファイルパスが正しいこと、およびHTMLファイルが標準に準拠していることを確認してください。問題が続く場合は、ファイルに正しいUTF-8エンコード宣言が含まれているかどうかを確認するか、エラー処理を使用して問題をキャッチしてデバッグできます。
$html = file_get_contents('yourfile.html');
if ($html === false) {
die('ファイルを読み取れません');
}
$metaTags = get_meta_tags('yourfile.html');
if (empty($metaTags)) {
echo "見つかりません meta ラベル。\n";
}
関連タグ:
HTML