Maison >développement back-end >tutoriel php >Comment puis-je sélectionner efficacement les éléments DOM par nom de classe à l'aide de PHP ?

Comment puis-je sélectionner efficacement les éléments DOM par nom de classe à l'aide de PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 20:27:11230parcourir

How Can I Efficiently Select DOM Elements by Class Name Using PHP?

Obtenir des éléments DOM par nom de classe à l'aide de PHP DOM

Lorsque vous travaillez avec PHP DOM, il est crucial d'obtenir des éléments spécifiques dans un nœud en fonction de leur classe. Explorons les meilleures approches pour y parvenir :

XPath Selector

$dom = new DomDocument();<br>$dom->load($filePath);<br>$finder = nouveau DomXPath($dom);<br>$classname = "ma-classe";<br>$nodes = $finder->query("//*[contains(@class, '$classname')]");<br>

Cette approche utilise XPath pour sélectionner tous les éléments avec l'attribut de classe spécifié.

Zend_Dom_Query CSS Sélecteur

Si vous préférez la syntaxe du sélecteur CSS, Zend_Dom_Query offre une solution pratique :

$finder = new Zend_Dom_Query($html);<br>$classname = 'my-class ';<br>$nœuds = $finder->query("*[class~='$classname']");<br>

Mise à jour : version XPath de *[@class~=' my-class'] Sélecteur CSS

L'analyse du sélecteur CSS à l'aide de Zend_Dom_Query révèle un XPath équivalent expression :

$nodes = $finder->query("[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]" );<br>

En utilisant directement ce XPath, vous pouvez rechercher des éléments contenant la classe spécifiée sans utiliser Zend_Dom_Query.

Lors de la sélection d'éléments par classe, il convient de noter que si le type d'élément est connu, vous pouvez remplacer le * par le nom de la balise correspondante, réduisant ainsi la recherche et améliorant l'efficacité.

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