Position actuelle: Accueil> Derniers articles> Problèmes et solutions courantes Lors de l'analyse des méta-balises de HTML à l'aide de la fonction get_meta_tags

Problèmes et solutions courantes Lors de l'analyse des méta-balises de HTML à l'aide de la fonction get_meta_tags

gitbox 2025-06-17

1. Introduction à la fonction get_meta_tags

La syntaxe de base de la fonction get_meta_tags est la suivante:

 array get_meta_tags ( string $filename )

Cette fonction prend un chemin de fichier (ou URL) et analyse tous les fichiers dedans Étiquette. Le résultat renvoyé est un tableau associatif, où la clé du tableau est le nom ou la propriété de la propriété de la balise META , et la valeur est la propriété de contenu correspondante.

Par exemple, considérez l'exemple HTML suivant:

 <html>
<head>
    <meta name="description" content="Ceci est une page de test">
    <meta name="keywords" content="PHP, HTML, meta">
    <meta property="og:title" content="Open Graph Title">
</head>
<body>
    <!-- Contenu de la page -->
</body>
</html>

Après analyser ce fichier HTML avec get_meta_tags , le tableau renvoyé sera:

 array(
    'description' => 'Ceci est une page de test',
    'keywords' => 'PHP, HTML, meta',
    'og:title' => 'Open Graph Title'
)

2. Des questions et des solutions fréquemment posées

2.1 Question 1: Échec de l'analyse correcte de tous Étiquette

Lors de l'analyse de la fonction get_meta_tags , seules les propriétés du nom et de la propriété sont prêtes attention, et les balises de l'attribut HTTP-Equiv sont ignorées. Si vous l'avez dans votre HTML , la balise ne sera pas analysée par get_meta_tags .

Solution:

Si vous devez analyser les balises pour les attributs HTTP-Equiv , vous pouvez envisager d'utiliser un analyseur HTML plus puissant, tel que DomDocument , pour obtenir tous les Tags et leur contenu.

 $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";
}

Cette méthode peut analyser tout, y compris HTTP-Equiv Étiquette.

2.2 Question 2: get_meta_tags ne peut pas gérer les problèmes d'encodage des caractères dans les URL

Lorsque l'URL est transmise, la fonction GET_META_TAGS ne parvient pas à analyser correctement certains encodages de caractères (par exemple, UTF-8 ou GB2312). Si le codage du fichier HTML ne correspond pas au codage par défaut de PHP, des erreurs d'analyse peuvent se produire.

Solution:

Vous pouvez d'abord convertir le contenu HTML en codage de caractères correct via la fonction MB_Convert_encoding , puis appeler 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);

De cette façon, vous pouvez vous assurer que le contenu HTML est correctement codé lors de l'analyse.

2.3 Question 3: Impossible d'obtenir des étiquettes de méta chargées dynamiquement

Certaines pages Web Les balises sont chargées dynamiquement via JavaScript. La fonction get_meta_tags ne peut pas analyser ces contenus dynamiques car il ne lit que le contenu statique du fichier HTML et ne s'exécute pas JavaScript.

Solution:

Pour le contenu HTML généré dynamiquement, il est recommandé d'utiliser des outils d'automatisation du navigateur tels que le sélénium ou le marionnettiste pour simuler le comportement du navigateur et obtenir le HTML rendu final. À l'heure actuelle, le HTML rendu peut être extrait et analysé à l'aide de get_meta_tags .

2.4 Question 4: Ignorer le cas

Dans HTML, les balises et les noms d'attributs sont insensibles à la casse. Cependant, dans le tableau renvoyé par la fonction GET_META_TAGS , les touches sont généralement minuscules. Si vous utilisez des majuscules dans votre HTML, , get_meta_tags l'analysera toujours en description (minuscules).

Solution:

Si la balise de méta retournée doit être sensible à la casse, elle peut être convertie manuellement en format unifié ou effectué directement le traitement nécessaire dans les données analysées.

 $metaTags = get_meta_tags('yourfile.html');
$metaTags = array_change_key_case($metaTags, CASE_LOWER);

2.5 Question 5: Retourner un tableau ou l'analyse vide a échoué

Si le chemin du fichier entrant est faux, ou si le fichier lui-même ne l'a pas Les balises, get_meta_tags renverront un tableau vide. Pour le moment, cela peut être dû au fait que le format de fichier HTML n'est pas standardisé ou que le chemin du fichier est inaccessible.

Solution:

Assurez-vous que le chemin du fichier est correct et que le fichier HTML est conforme aux normes. Si le problème persiste, vous pouvez vérifier si le fichier contient la déclaration de codage UTF-8 correcte ou utiliser la gestion des erreurs pour attraper et déboguer le problème.

 $html = file_get_contents('yourfile.html');
if ($html === false) {
    die('Impossible de lire le fichier');
}
$metaTags = get_meta_tags('yourfile.html');
if (empty($metaTags)) {
    echo "Pas trouvé meta Étiquette。\n";
}
  • Étiquettes associées:

    HTML