Récupérer le texte des éléments avec une classe spécifiée sous forme de tableau complet
Dans cette requête, la tâche à accomplir est d'extraire et de catégoriser les données texte à partir d'un document HTML basé sur des classes d'éléments spécifiques. Le document HTML contient divers paragraphes avec des classes telles que "Heading1-P" et "Normal-P", chacune contenant les titres et le contenu correspondants.
Pour ce faire, nous pouvons utiliser PHP DOM Document et XPath. Le processus consiste à analyser le document HTML et à parcourir ses éléments à l'aide de XPath. Nous définissons une fonction personnalisée, parseToArray() qui prend un objet XPath et un nom de classe comme entrées. Cette fonction parcourt les éléments correspondant à la classe et extrait leur contenu textuel dans un tableau.
Voici la solution détaillée :
$test = <<< HTML <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> <p class="Heading1-P"> <span class="Heading1-H">Chapter 2</span> </p> <p class="Normal-P"> <span class="Normal-H">This is chapter 2</span> </p> <p class="Heading1-P"> <span class="Heading1-H">Chapter 3</span> </p> <p class="Normal-P"> <span class="Normal-H">This is chapter 3</span> </p> 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 "<br/>"; var_dump($content); echo "<br/>"; function parseToArray(DOMXPath $xpath, string $class): array { $xpathquery = "//[@class='$class']"; $elements = $xpath->query($xpathquery); $resultarray = []; foreach ($elements as $element) { $nodes = $element->childNodes; foreach ($nodes as $node) { $resultarray[] = $node->nodeValue; } } return $resultarray; }
La fonction parseToArray() identifie les éléments en fonction d'une classe spécifique nom et extrait leur contenu textuel dans un tableau. Par la suite, deux tableaux sont créés : $heading et $content, qui contiennent respectivement les titres des chapitres et le texte du paragraphe correspondant. Le résultat du code sera le suivant :
array(3) { [0] => string(8) "Chapter 1" [1] => string(8) "Chapter 2" [2] => string(8) "Chapter 3" } array(3) { [0] => string(16) "This is chapter 1" [1] => string(16) "This is chapter 2" [2] => string(16) "This is chapter 3" }
En employant cette approche, vous pouvez récupérer et séparer efficacement le contenu textuel en fonction de noms de classe spécifiques à partir d'un document HTML, permettant un traitement de données flexible et ciblé.
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!