Maison  >  Article  >  développement back-end  >  Expression régulière PHP : comment faire correspondre tous les titres en HTML

Expression régulière PHP : comment faire correspondre tous les titres en HTML

WBOY
WBOYoriginal
2023-06-22 22:14:521151parcourir

Utiliser des expressions régulières pour faire correspondre les titres HTML est une opération courante en PHP. Le titre d’une page Web est généralement utilisé pour afficher le contenu général de la page, ce qui facilite la compréhension et la navigation des utilisateurs. Dans certains cas, nous devons extraire tous les titres du HTML pour un traitement ultérieur.

Cet article explique comment utiliser les expressions régulières PHP pour extraire rapidement et efficacement tous les titres en HTML.

1. Classification des titres HTML

Dans les pages HTML, il existe de nombreux types de titres, qui peuvent être définis à l'aide des balises suivantes :

    # 🎜🎜#h1 ~ balise h6 : utilisée pour indiquer le niveau du titre, h1 est le plus élevé, h6 est le plus bas
  1. balise titre : utilisée pour définir le titre de la page web, située ; dans la balise head ;
  2. #🎜 🎜#balise méta : utilisée pour définir les métadonnées d'une page Web, souvent utilisée dans l'optimisation des moteurs de recherche.
  3. 2. Expressions régulières PHP

Les expressions régulières sont un puissant outil de recherche et de remplacement qui peut traiter efficacement les chaînes de texte. En PHP, nous pouvons utiliser preg_match(), preg_match_all(), preg_replace() et d'autres fonctions pour implémenter la correspondance d'expressions régulières.

Voici quelques syntaxes d'expressions régulières couramment utilisées :

d : correspond aux caractères numériques
  1. w : correspond aux caractères alphanumériques et au trait de soulignement ; ;
  2. s : correspond aux caractères d'espacement ;
  3. ^ : correspond au début de la chaîne ;
  4. $ : correspond à la fin de la chaîne ; 🎜 🎜#
  5. * : correspond à n'importe quel nombre de caractères précédents ;
  6. + : correspond à au moins un caractère précédent 
  7.  ? : correspond à zéro ou à un caractère précédent ; caractère ;
  8. [] : correspond à un ensemble de caractères ;
  9. () : regroupe une expression pour les opérations ultérieures.
  10. 3. Faites correspondre tous les titres en HTML
Ci-dessous, nous présenterons comment utiliser les expressions régulières PHP pour faire correspondre différents types de titres dans les pages HTML.

balise h1 ~ h6

  1. Tout d'abord, voyons comment faire correspondre le titre dans la balise h1 ~ h6. Supposons que nous ayons le code HTML suivant :
  2. <!DOCTYPE html>
    <html>
    <head>
        <title>HTML 标题示例</title>
    </head>
    <body>
        <h1>这是一级标题</h1>
        <h2>这是二级标题</h2>
        <h3>这是三级标题</h3>
        <h4>这是四级标题</h4>
        <h5>这是五级标题</h5>
        <h6>这是六级标题</h6>
    </body>
    </html>
Nous pouvons utiliser la fonction preg_match_all() et l'expression régulière /a89f0e6cefb655e6af53ab7f92340e0c(.*?)00aed3d48feecfe549ba7671838af3e9/, pour extraire tous les titres :

$html = file_get_contents('example.html');
preg_match_all('/<h[1-6]>(.*?)</h[1-6]>/', $html, $matches);
print_r($matches[0]);

Dans le code ci-dessus, on utilise la fonction file_get_contents() pour lire le contenu du fichier HTML, et puis utilisez la fonction preg_match_all() et l'expression régulière /a89f0e6cefb655e6af53ab7f92340e0c(.*?)8d709ee326a72fb29c36fdf04fb62c17/ pour faire correspondre h1 ~ h6 des titres dedans.

/a89f0e6cefb655e6af53ab7f92340e0c(.*?)8d709ee326a72fb29c36fdf04fb62c17/,来提取其中所有的标题:

Array
(
    [0] => <h1>这是一级标题</h1>
    [1] => <h2>这是二级标题</h2>
    [2] => <h3>这是三级标题</h3>
    [3] => <h4>这是四级标题</h4>
    [4] => <h5>这是五级标题</h5>
    [5] => <h6>这是六级标题</h6>
)

上述代码中,我们使用 file_get_contents() 函数读取 HTML 文件内容,然后使用 preg_match_all() 函数和正则表达式 /a89f0e6cefb655e6af53ab7f92340e0c(.*?)8d709ee326a72fb29c36fdf04fb62c17/,来匹配其中的 h1 ~ h6 标题。

正则表达式中的 /a89f0e6cefb655e6af53ab7f92340e0c(.*?)8d709ee326a72fb29c36fdf04fb62c17/,表示匹配 h1 ~ h6 标签内部的字符串,其中 (.*?) 表示非贪婪模式,匹配尽量少的字符。

输出结果如下:

<!DOCTYPE html>
<html>
<head>
    <title>HTML 标题示例</title>
</head>
<body>
    <h1>这是一级标题</h1>
    <p>段落内容</p>
    <h2>这是二级标题</h2>
    <p>段落内容</p>
</body>
</html>

可以看到,我们成功匹配了 HTML 页面中所有的 h1 ~ h6 标题。

  1. title 标签

接下来,我们来看如何匹配 title 标签中的网页标题。假设我们有以下的 HTML 代码:

$html = file_get_contents('example.html');
preg_match('/<title>(.*?)</title>/', $html, $matches);
echo $matches[1];

我们可以使用 preg_match() 函数和正则表达式 /b2386ffb911b14667cb8f0f91ea547a7(.*?)6e916e0f7d1e588d4f442bf645aedb2f/,来提取其中的网页标题:

HTML 标题示例

上述代码中,我们使用 file_get_contents() 函数读取 HTML 文件内容,然后使用 preg_match() 函数和正则表达式 /b2386ffb911b14667cb8f0f91ea547a7(.*?)6e916e0f7d1e588d4f442bf645aedb2f/,来匹配其中的 title 标签。

正则表达式中的 /b2386ffb911b14667cb8f0f91ea547a7(.*?)6e916e0f7d1e588d4f442bf645aedb2f/,表示匹配 title 标签内部的字符串,其中 (.*?) 表示非贪婪模式,匹配尽量少的字符。

输出结果如下:

<!DOCTYPE html>
<html>
<head>
    <title>HTML 标题示例</title>
    <meta charset="utf-8">
    <meta name="keywords" content="HTML,标题,元数据">
    <meta name="description" content="HTML 标题示例 - 一个简单的 HTML 页面,包含多种类型的标题和元数据。">
</head>
<body>
    <h1>这是一级标题</h1>
    <p>段落内容</p>
    <h2>这是二级标题</h2>
    <p>段落内容</p>
</body>
</html>

可以看到,我们成功匹配了 HTML 页面的网页标题。

  1. meta 标签

最后,我们来看如何匹配 meta 标签中的元数据。假设我们有以下的 HTML 代码:

$html = file_get_contents('example.html');
preg_match_all('/<metas+([^>]+s)*names*=s*(['"]?)keywords([^>]+s)*>/', $html, $matches);
print_r($matches[0]);

我们可以使用 preg_match_all() 函数和正则表达式 /009e73b024cea1a72b88379c80490b1c]+s)*names*=s*(['"]?)keywords([^>]+s)*>/,来提取其中的关键词元数据:

Array
(
    [0] => <meta name="keywords" content="HTML,标题,元数据">
)

上述代码中,我们使用 file_get_contents() 函数读取 HTML 文件内容,然后使用 preg_match_all() 函数和正则表达式 /009e73b024cea1a72b88379c80490b1c]+s)*names*=s*(['"]?)keywords([^>]+s)*>/,来匹配其中的关键词元数据。

正则表达式中的 /009e73b024cea1a72b88379c80490b1c]+s)*names*=s*(['"]?)keywords([^>]+s)*>//a89f0e6cefb655e6af53ab7f92340e0c(.*?)8d709ee326a72fb29c36fdf04fb62c17/ dans les expressions régulières signifie faire correspondre les chaînes à l'intérieur des balises h1 ~ h6, où (.*?) représente un mode non gourmand et correspond au moins de caractères possible.

Les résultats de sortie sont les suivants :

rrreee

Comme vous pouvez le voir, nous avons réussi à faire correspondre tous les titres h1 ~ h6 de la page HTML.

    balise titre

    Ensuite, voyons comment faire correspondre le titre de la page Web dans la balise titre. Supposons que nous ayons le code HTML suivant : #🎜🎜#rrreee#🎜🎜# Nous pouvons utiliser la fonction preg_match() et l'expression régulière /b2386ffb911b14667cb8f0f91ea547a7(.*?)6e916e0f7d1e588d4f442bf645aedb2f/ code >, pour extraire le titre de la page Web : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous utilisons la fonction file_get_contents() pour lire le contenu du fichier HTML, puis utilisons la fonction preg_match() et l'expression régulière <code>/1fd589692e180fb978cda37041cfc5e2(.*?)6e916e0f7d1e588d4f442bf645aedb2f/ pour correspondre à la balise de titre. #🎜🎜##🎜🎜#/b2386ffb911b14667cb8f0f91ea547a7(.*?)6e916e0f7d1e588d4f442bf645aedb2f/ dans l'expression régulière signifie faire correspondre la chaîne à l'intérieur de la balise de titre, où (. *?) représente un modèle non gourmand, correspondant au moins de caractères possible. #🎜🎜##🎜🎜#Le résultat de sortie est le suivant : #🎜🎜#rrreee#🎜🎜#Comme vous pouvez le voir, nous avons réussi à faire correspondre le titre de la page HTML. #🎜🎜#
      #🎜🎜#meta tag #🎜🎜##🎜🎜##🎜🎜#Enfin, voyons comment faire correspondre les métadonnées dans la balise méta. Supposons que nous ayons le code HTML suivant : #🎜🎜#rrreee#🎜🎜# Nous pouvons utiliser la fonction preg_match_all() et l'expression régulière /009e73b024cea1a72b88379c80490b1c]+s)*names*=s * (['"]?)keywords ([^>]+s)*>/, pour extraire les métadonnées du mot-clé : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous utilisons le file_get_contents() pour lire le contenu du fichier HTML, puis utilisez la fonction preg_match_all() et l'expression régulière /009e73b024cea1a72b88379c80490b1c]+s)*names*=s*(['"] ?) mots-clés ([^>]+s)*>/ pour correspondre aux métadonnées du mot-clé. #🎜🎜##🎜🎜#/009e73b024cea1a72b88379c80490b1c]+s)*names*=s*(['"]?)mots-clés ([^>] dans les expressions régulières +s) *>/, ce qui signifie faire correspondre la chaîne à l'intérieur de la balise méta dont l'attribut de nom est mots-clés #🎜🎜##🎜🎜#Le résultat de sortie est le suivant : #🎜🎜#rrreee#🎜🎜#Vous pouvez. voyez, nous avons réussi à faire correspondre les métadonnées des mots-clés dans la page HTML #🎜🎜##🎜🎜# 4. Résumé #🎜🎜##🎜🎜# Cet article explique comment utiliser les expressions régulières PHP pour faire correspondre différents types dans la page HTML. title. En utilisant preg_match(), preg_match_all(), preg_replace() et d'autres fonctions, combinées à la syntaxe et aux règles des expressions régulières, nous pouvons facilement extraire les informations pertinentes dans le code HTML pour un traitement et une analyse ultérieurs #🎜🎜#.

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