"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je conserver les balises HTML lors de l'extraction de nœuds à l'aide du DOMDocument de PHP ?

Comment puis-je conserver les balises HTML lors de l'extraction de nœuds à l'aide du DOMDocument de PHP ?

Publié le 2024-12-22
Parcourir:479

How Can I Preserve HTML Tags When Extracting Nodes Using PHP's DOMDocument?

Problèmes liés à l'extraction de nœuds HTML à l'aide de DOMDocument

Introduction

DOMDocument, une classe PHP, offre une approche pratique pour l'analyse et manipuler des documents HTML. Cependant, lorsqu'ils tentent de conserver les balises HTML lors de l'extraction du contenu, les utilisateurs peuvent rencontrer des difficultés. Cet article approfondit le concept sous-jacent du DOM et propose des solutions pour relever ce défi.

Comprendre le DOM et les nœuds

DOMDocument représente les documents HTML sous forme d'arborescences hiérarchiques de nœuds. Chaque nœud peut avoir des nœuds enfants, formant une structure complexe. Il est crucial de reconnaître que les éléments HTML, ainsi que leurs attributs et leur contenu textuel, sont tous représentés sous forme de nœuds au sein d'un DOMDocument.

Résoudre le problème de préservation des balises

Les éléments fournis le code récupère avec succès le nœud DIV avec l'identifiant "showContent". Cependant, il récupère uniquement le contenu textuel du DIV, à l'exclusion des balises HTML elles-mêmes. En effet, le code utilise $tag->nodeValue, qui extrait uniquement le texte plutôt que les nœuds réels.

Solution : Traverser les nœuds

Pour préserver les nœuds HTML, vous devez parcourir les nœuds enfants de votre nœud cible. Le code ci-dessous présente cette approche :

$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$tags = $xpath->query('.//div[@id="showContent"]');
foreach ($tags as $tag) {
    echo $dom->saveXML($tag);
    echo '
'; }

Récupération d'informations spécifiques à partir de HTML

Si vous avez besoin d'informations spécifiques à partir du document HTML, telles que des liens de la table, vous pouvez modifier la requête XPath pour sélectionner le nœuds appropriés. Par exemple : 

foreach ($div->getElementsByTagName('a') as $link) {
    echo $dom->saveXML($link);
}

Ressources supplémentaires

Pour obtenir de l'aide supplémentaire sur l'utilisation de DOMDocument, reportez-vous aux ressources suivantes :

  • [Documentation DOMDocument](https ://www.php.net/manual/en/class.domdocument.php)
  • [Questions et réponses sur DOMDocument dans Stack Débordement](https://stackoverflow.com/search?q=user:208809 DOM)
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3