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 :
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ériquesbalise h1 ~ h6
<!DOCTYPE html> <html> <head> <title>HTML 标题示例</title> </head> <body> <h1>这是一级标题</h1> <h2>这是二级标题</h2> <h3>这是三级标题</h3> <h4>这是四级标题</h4> <h5>这是五级标题</h5> <h6>这是六级标题</h6> </body> </html>
/<h[1-6]>(.*?)< / h[1-6]>/
, 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]);
/<h[1-6]>(.*?)</h[1-6]>/
pour faire correspondre h1 ~ h6 des titres dedans. /<h[1-6]>(.*?)</h[1-6]>/
,来提取其中所有的标题:
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() 函数和正则表达式 /<h[1-6]>(.*?)</h[1-6]>/
,来匹配其中的 h1 ~ h6 标题。
正则表达式中的 /<h[1-6]>(.*?)</h[1-6]>/
,表示匹配 h1 ~ h6 标签内部的字符串,其中 (.*?)
表示非贪婪模式,匹配尽量少的字符。
输出结果如下:
<!DOCTYPE html> <html> <head> <title>HTML 标题示例</title> </head> <body> <h1>这是一级标题</h1> <p>段落内容</p> <h2>这是二级标题</h2> <p>段落内容</p> </body> </html>
可以看到,我们成功匹配了 HTML 页面中所有的 h1 ~ h6 标题。
接下来,我们来看如何匹配 title 标签中的网页标题。假设我们有以下的 HTML 代码:
$html = file_get_contents('example.html'); preg_match('/<title>(.*?)</title>/', $html, $matches); echo $matches[1];
我们可以使用 preg_match() 函数和正则表达式 /<title>(.*?)</title>/
,来提取其中的网页标题:
HTML 标题示例
上述代码中,我们使用 file_get_contents() 函数读取 HTML 文件内容,然后使用 preg_match() 函数和正则表达式 /<title>(.*?)</title>/
,来匹配其中的 title 标签。
正则表达式中的 /<title>(.*?)</title>/
,表示匹配 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 页面的网页标题。
最后,我们来看如何匹配 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() 函数和正则表达式 /<metas+([^>]+s)*names*=s*(['"]?)keywords([^>]+s)*>/
,来提取其中的关键词元数据:
Array ( [0] => <meta name="keywords" content="HTML,标题,元数据"> )
上述代码中,我们使用 file_get_contents() 函数读取 HTML 文件内容,然后使用 preg_match_all() 函数和正则表达式 /<metas+([^>]+s)*names*=s*(['"]?)keywords([^>]+s)*>/
,来匹配其中的关键词元数据。
正则表达式中的 /<metas+([^>]+s)*names*=s*(['"]?)keywords([^>]+s)*>/
/<h[1-6]>(.*?)</h[1-6]>/
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 :
rrreeeComme 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/<title>(.*?)</title>/ 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 /< title>(.*?)/
pour correspondre à la balise de titre. #🎜🎜##🎜🎜#/<title>(.*?)</title>/
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 /<metas+([^>]+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 /<metas+([^>]+s)*names*=s*(['"] ?) mots-clés ([^>]+s)*>/
pour correspondre aux métadonnées du mot-clé. #🎜🎜##🎜🎜#/<metas+([^>]+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!