Maison  >  Article  >  développement back-end  >  Comment extraire efficacement le texte d'éléments HTML spécifiques à l'aide de DOMDocument et XPath de PHP ?

Comment extraire efficacement le texte d'éléments HTML spécifiques à l'aide de DOMDocument et XPath de PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 08:48:29440parcourir

How to Efficiently Extract Text from Specific HTML Elements Using PHP's DOMDocument and XPath?

Analyse HTML avec le HTML DOMDocument de PHP

Question :

En utilisant l'objet DOMDocument, capturez texte dans des éléments HTML spécifiques. Par exemple, extraire « Capturer ce texte 1 » et « Capturer ce texte 2 » du code HTML suivant :

<div class="main">
    <div class="text">
    Capture this text 1
    </div>
</div>

<div class="main">
    <div class="text">
    Capture this text 2
    </div>
</div>

Réponse :

Utilisation de DOMDocument::getElementsByTagName récupérer toutes les balises portant un nom spécifique peut s'avérer inefficace pour cette tâche. Au lieu de cela, envisagez d'utiliser une requête XPath sur le document, en tirant parti de la classe DOMXPath.

Mise en œuvre :

  1. Charger du HTML dans un DOMDocument Objet :

    <code class="php">$html = <<<HTML
    <div class="main">
     <div class="text">
     Capture this text 1
     </div>
    </div>
    
    <div class="main">
     <div class="text">
     Capture this text 2
     </div>
    </div>
    HTML;
    
    $dom = new DOMDocument();
    $dom->loadHTML($html);</code>
  2. Instancier DOMXPath Objet :

    <code class="php">$xpath = new DOMXPath($dom);</code>
  3. Exécuter XPath Requête :

    <code class="php">$tags = $xpath->query('//div[@class="main"]/div[@class="text"]');</code>
  4. Récupérer les valeurs de texte :

    <code class="php">foreach ($tags as $tag) {
     var_dump(trim($tag->nodeValue));
    }</code>

Cette approche extrait efficacement " Capturez ce texte 1" et "Capturez ce texte 2" à partir du code HTML fourni.

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