Analyser HTML en PHP

Olorunfemi Akinlua 18 aout 2022
  1. Utilisez DomDocument() pour analyser le code HTML en PHP
  2. Utilisez simplehtmldom pour analyser le code HTML en PHP
  3. Utilisez DiDOM pour analyser le HTML en PHP
Analyser 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 Akinlua avatar Olorunfemi Akinlua avatar

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

Article connexe - PHP HTML