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 :
$dom = new DOMDocument(); $dom->loadHTML($test);
$xpath = new DOMXPath($dom);
$heading = parseToArray($xpath, 'Heading1-H'); $content = parseToArray($xpath, 'Normal-H');
Dans la fonction parseToArray() :
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 2This 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!