Signatur
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
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.';
}
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)
// 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.