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

WBOY
Libérer: 2023-06-22 22:26:02
original
916 Les gens l'ont consulté

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>
Copier après la connexion

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);
Copier après la connexion

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, //i est l'expression régulière utilisée pour correspondre à la balise méta, où 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="这里是网页的关键词">
        )

)
Copier après la connexion

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);
Copier après la connexion

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
        )

)
Copier après la connexion

À 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal