Maison >développement back-end >tutoriel php >Comment extraire du texte d'éléments HTML avec des classes spécifiques dans des tableaux plats à l'aide de PHP DOM ?

Comment extraire du texte d'éléments HTML avec des classes spécifiques dans des tableaux plats à l'aide de PHP DOM ?

DDD
DDDoriginal
2024-11-15 17:18:03973parcourir

How to Extract Text from HTML Elements with Specific Classes into Flat Arrays using PHP DOM?

Extraire du texte plat à partir d'éléments avec une classe désignée à l'aide de PHP DOM

Extraire du texte à partir d'éléments HTML spécifiques est une tâche courante dans le développement Web. PHP DOM fournit des outils robustes pour analyser le HTML et accéder à son contenu. Cet article répond à une exigence spécifique pour extraire le texte des éléments avec une classe désignée dans deux tableaux plats.

Problème

Étant donné le contenu HTML contenant du texte distribué entre plusieurs p éléments avec En alternant les noms de classe, la tâche consiste à enregistrer le texte dans deux tableaux : un pour les titres et un pour le contenu. Par exemple, étant donné le code HTML suivant :

<p class="Heading1-P">
    <span class="Heading1-H">Chapter 1</span>
</p>
<p class="Normal-P">
    <span class="Normal-H">This is chapter 1</span>
</p>

Nous devons obtenir le résultat suivant :

$heading = ['Chapter 1', 'Chapter 2', 'Chapter 3'];
$content = ['This is chapter 1', 'This is chapter 2', 'This is chapter 3'];

Solution

Pour accomplir cela extraction à l'aide de PHP DOM, nous utilisons DOMDocument et DOMXPath. La solution implique les étapes suivantes :

  1. Chargez le code HTML dans un objet DOMDocument :
$dom = new DOMDocument();
$dom->loadHTML($test);
  1. Créez un objet DOMXPath pour effectuer des XPaths :
$xpath = new DOMXPath($dom);
  1. Utilisez la fonction parseToArray() pour extraire le texte des éléments avec la classe spécifiée :
$heading = parseToArray($xpath, 'Heading1-H');
$content = parseToArray($xpath, 'Normal-H');

Dans la fonction parseToArray() :

  • Il effectue une requête XPath pour la classe désignée.
  • Parcourt les nœuds correspondants et extrait leur contenu textuel.
  • Stocke le texte extrait dans un tableau, qui est renvoyé.

Voici le code PHP complet :

query($xpathquery);

    $resultarray = [];
    foreach ($elements as $element) {
        $nodes = $element->childNodes;
        foreach ($nodes as $node) {
            $resultarray[] = $node->nodeValue;
        }
    }

    return $resultarray;
}

$test = <<
    Chapter 2

This is chapter 2

Chapter 3

This is chapter 3

HTML; $dom = new DOMDocument(); $dom->loadHTML($test); $xpath = new DOMXPath($dom); $heading = parseToArray($xpath, 'Heading1-H'); $content = parseToArray($xpath, 'Normal-H'); var_dump($heading); echo "
"; var_dump($content); echo "
";

Cette approche utilise la puissance de PHP DOM et XPath pour extraire efficacement le texte des documents HTML, permettant ainsi des tâches plus complexes et ciblées. manipulation de contenu.

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