Analyser HTML en PHP
-
Utilisez
DomDocument()
pour analyser le code HTML en PHP -
Utilisez
simplehtmldom
pour analyser le code HTML en PHP -
Utilisez
DiDOM
pour analyser le HTML en PHP
L’analyse HTML nous permet de convertir son contenu ou son balisage en chaîne, ce qui facilite l’analyse ou la création d’un fichier HTML dynamique. Plus en détail, il prend le code HTML brut, le lit, génère une structure d’objet arborescente DOM des paragraphes aux en-têtes, et nous permet d’extraire les informations importantes ou nécessaires.
Nous analysons les fichiers HTML à l’aide de bibliothèques intégrées et parfois de bibliothèques tierces pour le grattage Web ou l’analyse de contenu en PHP. Selon la méthode, l’objectif est de convertir le corps du document HTML en une chaîne pour extraire chaque balise HTML.
Cet article traitera de la classe intégrée, DomDocument()
, et de deux bibliothèques tierces, simplehtmldom
et DiDOM
.
Utilisez DomDocument()
pour analyser le code HTML en PHP
Qu’il s’agisse d’un fichier HTML local ou d’une page Web en ligne, les classes DOMDocument()
et DOMXpath()
aident à analyser un fichier HTML et à stocker son élément sous forme de chaînes ou, dans le cas de notre exemple, un tableau.
Analysons ce fichier HTML à l’aide des fonctions et renvoyons les titres, sous-titres et paragraphes.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h2 class="main">Welcome to the Abode of PHP</h2>
<p class="special">
PHP has been the saving grace of the internet from its inception, it
runs over 70% of website on the internet
</p>
<h3>Understanding PHP</h3>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Eum minus
eos cupiditate earum et optio culpa, eligendi facilis laborum
dolore.
</p>
<h3>Using PHP</h3>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Eum minus
eos cupiditate earum et optio culpa, eligendi facilis laborum
dolore.
</p>
<h3>Install PHP</h3>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Eum minus
eos cupiditate earum et optio culpa, eligendi facilis laborum
dolore.
</p>
<h3>Configure PHP</h3>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Eum minus
eos cupiditate earum et optio culpa, eligendi facilis laborum
dolore.
</p>
<h2 class="main">Welcome to the Abode of JS</h2>
<p class="special">
PHP has been the saving grace of the internet from its inception, it
runs over 70% of website on the internet
</p>
<h3>Understanding JS</h3>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Eum minus
eos cupiditate earum et optio culpa, eligendi facilis laborum
dolore.
</p>
</body>
</html>
Code PHP :
<?php
$html = 'index.html';
function getRootElement($element, $html)
{
$dom = new DomDocument();
$html = file_get_contents($html);
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$content = $dom->getElementsByTagName($element);
foreach ($content as $each) {
echo $each->nodeValue;
echo "\n";
}
}
echo "The H2 contents are:\n";
getRootElement("h2", $html);
echo "\n";
echo "The H3 contents are:\n";
getRootElement("h3", $html);
echo "\n";
echo "The Paragraph contents include\n";
getRootElement("p", $html);
echo "\n";
La sortie de l’extrait de code est :
The H2 contents are:
Welcome to the Abode of PHP
Welcome to the Abode of JS
The H3 contents are:
Understanding PHP
Using PHP
Install PHP
Configure PHP
Understanding JS
The Paragraph contents include
PHP has been the saving grace of the internet from its inception, it
runs over 70% of the website on the internet
...
Utilisez simplehtmldom
pour analyser le code HTML en PHP
Pour des fonctionnalités supplémentaires telles que les sélecteurs de style CSS, vous pouvez utiliser une bibliothèque tierce appelée Simple HTML DOM Parser, qui est un analyseur PHP simple et rapide. Vous pouvez le télécharger et inclure ou exiger le fichier PHP unique.
Avec ce processus, vous pouvez facilement analyser tous les éléments que vous souhaitez. En utilisant le même extrait de code que dans la section précédente, nous allons analyser le HTML à l’aide d’une fonction appelée str_get_html()
, qui traite le HTML et utilise la méthode find()
pour rechercher un élément ou une balise HTML spécifique.
Pour trouver un élément avec une classe
spéciale, nous avons besoin du sélecteur classe
à appliquer à chaque élément find
. De plus, pour trouver le texte réel, nous devons utiliser le sélecteur innertext
sur l’élément, que nous stockons ensuite dans le tableau.
En utilisant le même fichier HTML que la dernière section, analysons-le en utilisant le simplehtmldom
.
<?php
require_once('simple_html_dom.php');
function getByClass($element, $class)
{
$content= [];
$html = 'index.html';
$html_string = file_get_contents($html);
$html = str_get_html($html_string);
foreach ($html->find($element) as $element) {
if ($element->class === $class) {
array_push($heading, $element->innertext);
}
}
print_r($content);
}
getByClass("h2", "main");
getByClass("p", "special");
La sortie de l’extrait de code est :
Array
(
[0] => Welcome to the Abode of PHP
[1] => Welcome to the Abode of JS
)
Array
(
[0] => PHP has been the saving grace of the internet from its inception, it runs over 70% of the website on the internet
[1] => PHP has been the saving grace of the internet from its inception, it runs over 70% of the website on the internet
)
Utilisez DiDOM
pour analyser le HTML en PHP
Pour cette bibliothèque PHP tierce, nous devons utiliser un gestionnaire de dépendances PHP appelé Composer, qui nous permet de gérer toutes nos bibliothèques et dépendances PHP. La bibliothèque DiDOM
est disponible via GitHub et offre plus de vitesse et de gestion de la mémoire que les autres bibliothèques.
Si vous ne l’avez pas, vous pouvez installer Composer ici. Cependant, la commande suivante ajoute la librairie DiDOM
à votre projet si vous l’avez.
composer require imangazaliev/didom
Après cela, vous pouvez utiliser le code ci-dessous, qui a une structure similaire à simplehtmldom
avec la méthode find()
. Il existe un text()
, qui convertit les contextes des éléments HTML en chaînes que nous pouvons utiliser dans notre code.
La fonction has()
vous permet de vérifier si vous avez un élément ou une classe dans votre chaîne HTML et renvoie une valeur booléenne.
<?php
use DiDom\Document;
require_once('vendor/autoload.php');
$html = 'index.html';
$document = new Document('index.html', true);
echo "H3 Element\n";
if ($document->has('h3')) {
$elements = $document->find('h3');
foreach ($elements as $element) {
echo $element->text();
echo "\n";
}
}
echo "\nElement with the Class 'main'\n";
if ($document->has('.main')) {
$elements = $document->find('.main');
foreach ($elements as $element) {
echo $element->text();
echo "\n";
}
}
La sortie de l’extrait de code est :
H3 Element
Understanding PHP
Using PHP
Install PHP
Configure PHP
Understanding JS
Element with the Class 'main'
Welcome to the Abode of PHP
Welcome to the Abode of JS
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn