Maison > développement back-end > tutoriel php > Comment puis-je extraire et catégoriser les données texte d'un document HTML en fonction de classes d'éléments spécifiques à l'aide de PHP ?

Comment puis-je extraire et catégoriser les données texte d'un document HTML en fonction de classes d'éléments spécifiques à l'aide de PHP ?

Mary-Kate Olsen
Libérer: 2024-11-12 15:48:01
original
649 Les gens l'ont consulté

How can I extract and categorize text data from an HTML document based on specific element classes using PHP?

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

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

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal