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

DDD
Libérer: 2024-11-15 17:18:03
original
870 Les gens l'ont consulté

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>
Copier après la connexion

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'];
Copier après la connexion

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);
Copier après la connexion
  1. Créez un objet DOMXPath pour effectuer des XPaths :
$xpath = new DOMXPath($dom);
Copier après la connexion
  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');
Copier après la connexion

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 "
";
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal