Voici un script PHP qui récupère les metatags présents sur une page HTML et qui les stocks dans un tableau.
Il existe une fonction toute prête get_meta_tags, mais celle-ci ne permet que de récupérer les meta de type name.
Les fonctions suivantes fonctionnent avec PHP 4, 5 et 7. La seconde fonction utilise les regex, un cours viendra sur la conception des regex bientôt.
Comme vu plus haut, la fonction get_meta_tags intégrée dans PHP permet de récupérer facilement les meta de type name d'une page HTML et les fournis sous forme de tableau.
La commande est simple, pour l'exemple nous allons récupérer les meta-tags de la page d'accueil du site :
<?php // On stocke les balises dans le tableau $tags $tags = get_meta_tags('https://www1.zonewebmaster.eu/'); // Affiche les balises demandées echo $tags['generator']; echo $tags['robots']; echo $tags['keywords'];
Le script affichera les lignes suivantes :
DokuWiki index,follow accueil
Pour les besoins d'un script PHP, j'avais besoin de récupérer le contenu des balises opengraph. J'ai donc utilisé la fonction suivante qui permet de récupérer l'ensemble des balises meta d'une page HTML.
Pour cela nous créons une fonction qui s'appelle getMeta.
<?php function getMeta($page) { $pattern = ' ~<\s*meta\s (?=[^>]*? \b(?:name|property|http-equiv)\s*=\s* (?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'| ([^"\'>]*?)(?=\s*/?\s*>|\s\w+\s*=)) ) [^>]*?\bcontent\s*=\s* (?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'| ([^"\'>]*?)(?=\s*/?\s*>|\s\w+\s*=)) [^>]*> ~ix'; if(preg_match_all($pattern, $url, $out)) return array_combine($out[1], $out[2]); return array(); } // usage $page = file_get_contents('https://www1.zonewebmaster.eu'); if ($page !== false{ $tags = getMeta($page); // Appel la fonction }
La fonction utilise un regex permettant de sélectionner toutes les balises meta (name,property,http-equiv), le regex est stocké dans la variable $pattern.
La fonction retourne un tableau vide s'il n'y a pas de metatag disponible sur la page HTML. Sinon tous les metatags sont stockés dans le tableau $tags.
La variable $page contient le code HTML de la page à lire.
Autres liens rapides pouvant vous intéresser