Maison >développement back-end >tutoriel php >Expression régulière PHP : comment faire correspondre toutes les balises méta en HTML

Expression régulière PHP : comment faire correspondre toutes les balises méta en HTML

WBOY
WBOYoriginal
2023-06-22 22:21:06933parcourir

Dans le développement Web, la balise méta est un élément très important. Elle fournit des informations supplémentaires sur le contenu de la page Web, telles que le titre de la page Web, la description de la page Web, les mots-clés, etc. Lors du traitement de pages HTML, vous devez parfois utiliser des expressions régulières pour faire correspondre les balises méta dans le code frontal. Voyons comment utiliser les expressions régulières PHP pour faire correspondre toutes les balises méta de la page HTML.

Tout d'abord, nous devons comprendre la manière conventionnelle d'écrire les balises méta dans les pages HTML. Le format général est le suivant :

<meta charset="UTF-8">
<meta name="description" content="这里是网页的描述">
<meta name="keywords" content="这里是网页的关键词">
<title>这里是网页标题</title>

Selon ce modèle, nous pouvons utiliser des expressions régulières pour faire correspondre ces balises méta. Tout d'abord, nous devons obtenir le code source de la page HTML, puis utiliser la fonction preg_match_all() de PHP pour faire correspondre les balises méta qu'elle contient, comme indiqué ci-dessous :

$html = file_get_contents("http://www.example.com");
preg_match_all('/<meta.*?>/i', $html, $matches);
print_r($matches);

Dans le code ci-dessus, utilisez d'abord la fonction file_get_contents() pour obtenez le code source d'une page HTML, puis utilisez la fonction preg_match_all() pour faire correspondre toutes les balises méta du code source et stockez les résultats correspondants dans la variable $matches. Parmi eux, /6a04ca81eba32ac506955b5caa466824/i est l'expression régulière utilisée pour correspondre à la balise méta, où 4ba36ca7d422c4da5d8417d331b21407 de la balise soit mis en correspondance.

Le résultat de l'exécution du code ci-dessus peut être le suivant :

Array
(
    [0] => Array
        (
            [0] => <meta charset="UTF-8">
            [1] => <meta name="description" content="这里是网页的描述">
            [2] => <meta name="keywords" content="这里是网页的关键词">
        )

)

Nous pouvons voir que grâce à la fonction preg_match_all(), nous avons réussi à faire correspondre toutes les balises méta de la page HTML et à enregistrer les résultats correspondants dans le tableau $matches.

Dans le même temps, si nous devons faire correspondre des valeurs d'attribut spécifiques dans la balise méta, telles que le jeu de caractères, le nom, le contenu, etc., nous pouvons également ajouter des règles de correspondance correspondantes à l'expression régulière ci-dessus, comme indiqué ci-dessous :

$html = file_get_contents("http://www.example.com");
preg_match_all('/<metas+.*?charset="(S+).*?>/i', $html, $matches);
print_r($matches);

Dans ce qui précède Dans le code, nous avons ajouté une règle de correspondance de s+ pour faire correspondre les espaces entre les attributs de balise, puis ajouté une règle de correspondance de charset="(S+)" à l'expression régulière pour faire correspondre les attributs de jeu de caractères et ses valeur d'attribut. Où S+ signifie correspondre à n’importe quel caractère du jeu de caractères à l’exception des espaces, + signifie que le jeu de caractères apparaît au moins une fois. Après avoir exécuté le code ci-dessus, le résultat peut ressembler à ceci :

Array
(
    [0] => Array
        (
            [0] => <meta charset="UTF-8">
        )

    [1] => Array
        (
            [0] => UTF-8
        )

)

À partir des résultats de correspondance ci-dessus, nous pouvons voir que l'attribut charset et sa valeur d'attribut dans la page ont été mis en correspondance avec succès.

En bref, en utilisant les expressions régulières de PHP, nous pouvons faire correspondre de manière flexible divers éléments des pages HTML, y compris les balises méta. Il convient de noter que bien que les expressions régulières soient pratiques, elles présentent également certaines limites. Par exemple, elles ne peuvent pas gérer certaines balises imbriquées complexes. Vous devez donc être prudent lorsque vous utilisez des expressions régulières.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn