<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cet article explique comment l'utiliserPHPInternepreg_matchFonctions pour extraireHTML源码Interne特定标签contenu。</span></span><span>
</span><span><span class="hljs-comment">// preg_matchC'est un puissant outil de correspondance d'expression régulière,Convient pour la correspondance des motifs simples。</span></span><span>
</span><span><span class="hljs-comment">// Cependant,Pour complexeHTMLstructure,Recommandé d'utiliserDOMDocumentMéthodes plus stables。</span></span><span>
</span><span><span class="hljs-comment">// Cet article sera à des fins d'apprentissage,expositionpreg_matchexister提取标签Interne基本用法。</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>Comment l'utiliserpreg_matchFonction deHTMLExtraire le contenu de balise spécifique à partir du code source?Quelles sont les étapes de fonctionnement détaillées?</h1>
existerWebEn cours de développement,Nous avons souvent besoin deHTMLExtraire certains contenu de balise spécifique à partir du code source,比如提取页面Interne标题、Adresse d'image ou texte de paragraphe。Bien que l'analyseHTMLUtilisation recommandéeDOMAnalyseur et autres outils,但existerun些简单的场景中,utiliser`preg_match`Les fonctions peuvent également effectuer des tâches rapidement。本文将详细讲解如何utiliser`preg_match`depuisHTMLExtraire le contenu de la balise spécifiée du code source。
</span><span><span class="hljs-comment">## un、apprendrepreg_matchUtilisation de base des fonctions</span></span><span>
`preg_match`OuiPHPFonctions utilisées pour effectuer une correspondance d'expression régulière,La syntaxe de base est la suivante:
```php
</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$pattern</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$subject</span></span><span> , </span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$matches</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span> )
</span></span>
$ Pattern : Expression régulière
$ sujet : la chaîne à rechercher (c'est-à-dire le code source HTML)
$ Matches : si le match réussit, le tableau de résultats correspondant sera retourné
La valeur de retour est 1 pour correspondre avec succès et 0 pour correspondre à la décalage.
Voici un exemple simple montrant comment extraire le contenu de la balise <Title> :
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<html><head><title>这Oui网页标题</title></head><body>contenu</body></html>'</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/<title>(.*?)<\/title>/i'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-variable">$matches</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>]; </span><span><span class="hljs-comment">// Sortir:这Oui网页标题</span></span><span>
</span></span>
<Title> et </Title> : Faites correspondre exactement les balises de début et de fin
(. *?) : Le contenu au milieu de la correspondance de modèle non guédie
/ i : Ignore Case
Preg_match ne peut correspondre que le premier contenu correspondant. Si vous souhaitez correspondre à plusieurs balises identiques, telles que plusieurs paragraphes <p> , vous devez utiliser la fonction preg_match_all .
Exemple:
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<p>第un段</p><p>Paragraphe 2</p>'</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/<p>(.*?)<\/p>/i'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">preg_match_all</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-variable">$matches</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>]); </span><span><span class="hljs-comment">// Sortir:Array ( [0] => 第un段 [1] => Paragraphe 2 )</span></span><span>
</span></span>
Problème de nidification HTML : les expressions régulières ne peuvent pas analyser correctement les balises imbriquées, telles que les erreurs sont susceptibles d'extraire le contenu du div à l'intérieur du contenu dans <v> <span> .
Sécurité : lors du traitement HTML entré par les utilisateurs, assurez-vous d'effectuer un traitement de sécurité pour empêcher les attaques XSS.
Problèmes de performance : régulièrement, l'efficacité de l'analyse est faible dans les documents HTML à grande échelle, il est recommandé d'utiliser DomDocument dans des structures complexes.
L'extraction du contenu de la balise HTML avec preg_match est idéal pour gérer des structures HTML simples. Il peut effectuer des tâches rapidement et efficacement lorsqu'ils traitent des pages avec du contenu fixe et du contenu bien formulé. Cependant, face à des structures HTML complexes ou imbriquées, des méthodes d'analyse plus professionnelles doivent être prises en compte. La maîtrise PREG_MATCH peut non seulement améliorer votre capacité d'expression régulière, mais vous permettre également de traiter facilement les données de texte dans des scénarios spécifiques.
<span></span>
Étiquettes associées:
HTML