Start · Sprachen · PHP · Referenz · get_meta_tags

get_meta_tags

Funktion

Liest alle <code>content</code>-Attribute der Meta-Tags aus einer HTML-Datei oder URL aus und gibt ein assoziatives Array zurück.

seit PHP 4.0.0 Kategorie: http

Signatur

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

Beschreibung

get_meta_tags() öffnet eine HTML-Datei (oder URL) und durchsucht sie nach <meta>-Tags im <head>-Bereich. Für jedes gefundene Meta-Tag wird der Wert des name-Attributs als Schlüssel und der Wert des content-Attributs als Wert in das Rückgabe-Array eingetragen.

Die Funktion ist nützlich, wenn man schnell Metadaten einer Webseite auslesen möchte, beispielsweise Beschreibung (description), Schlüsselwörter (keywords) oder Author-Informationen, ohne einen vollständigen HTML-Parser einsetzen zu müssen.

Beim Einlesen werden die Schlüssel normalisiert: Leerzeichen und Bindestriche im name-Attribut werden in Unterstriche umgewandelt, Großbuchstaben in Kleinbuchstaben. Das Parsen stoppt, sobald das schließende </head>-Tag gefunden wird, da Meta-Tags nur im Kopfbereich erwartet werden.

Für komplexere Anforderungen – z. B. das Auslesen von property-Attributen (wie bei Open-Graph-Tags) oder das Parsen vollständiger HTML-Dokumente – empfiehlt sich stattdessen der Einsatz von DOMDocument oder einem dedizierten HTML-Parser.

Parameter

Name Typ Default Beschreibung
$filename Pflicht string Pfad zu einer lokalen Datei oder eine URL, deren Meta-Tags ausgelesen werden sollen. URLs werden nur unterstützt, wenn allow_url_fopen in der PHP-Konfiguration aktiviert ist.
$use_include_path bool false Wenn true, wird die Datei auch entlang des include_path gesucht (wie bei fopen() mit diesem Flag).

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array zurück, in dem die normalisierten name-Werte der Meta-Tags als Schlüssel und die zugehörigen content-Werte als Werte dienen. Im Fehlerfall (z. B. Datei nicht gefunden) wird false zurückgegeben.

Beispiele

Meta-Tags einer lokalen HTML-Datei auslesen

<?php
// Beispiel-HTML-Datei (example.html):
// <html><head>
// <meta name="description" content="Eine Testseite">
// <meta name="keywords" content="php, meta, tags">
// <meta name="author" content="Max Mustermann">
// </head><body></body></html>

$tags = get_meta_tags('example.html');

if ($tags !== false) {
    print_r($tags);
} else {
    echo 'Datei konnte nicht geöffnet werden.';
}
Array ( [description] => Eine Testseite [keywords] => php, meta, tags [author] => Max Mustermann )

Meta-Tags einer externen URL abrufen

<?php
// Hinweis: allow_url_fopen muss in php.ini aktiviert sein
$url = 'https://www.example.com/';

$tags = @get_meta_tags($url);

if ($tags !== false && !empty($tags)) {
    foreach ($tags as $name => $content) {
        echo htmlspecialchars($name) . ': ' . htmlspecialchars($content) . PHP_EOL;
    }
} else {
    echo 'Keine Meta-Tags gefunden oder Seite nicht erreichbar.';
}

Normalisierung von Meta-Tag-Namen

<?php
// Beispiel-HTML mit Bindestrichen und Großbuchstaben im name-Attribut:
// <meta name="Content-Type" content="text/html">
// <meta name="DC.Creator" content="Jane Doe">

$tags = get_meta_tags('example2.html');
print_r($tags);
// Schlüssel werden zu: content_type und dc.creator (Punkte bleiben erhalten,
// Bindestriche werden zu Unterstrichen, Groß- zu Kleinbuchstaben)
Array ( [content_type] => text/html [dc.creator] => Jane Doe )

// Wichtig · Fallstricke

Einschränkungen beim Parsen: get_meta_tags() versteht nur <meta name="..." content="...">-Tags. Meta-Tags mit property-Attribut (z. B. Open-Graph-Tags wie <meta property="og:title" content="...">) werden nicht erkannt. Für solche Fälle sollte DOMDocument verwendet werden.

Sicherheit bei URLs: Beim Abrufen externer URLs sollte der Rückgabewert stets auf false geprüft werden. Außerdem könnten bösartige Seiten extrem große Dokumente liefern. Für produktiven Einsatz empfiehlt sich cURL mit gesetztem CURLOPT_MAXFILESIZE und anschließendem Parsen mit DOMDocument.

Zeichenkodierung: Die Funktion gibt die content-Werte so zurück, wie sie in der Datei stehen – ohne automatische Konvertierung. Bei nicht-UTF-8-Seiten kann mb_convert_encoding() nötig sein.