Maison >développement back-end >tutoriel php >Comment puis-je récupérer efficacement des éléments DOM par nom de classe à l'aide de PHP ?

Comment puis-je récupérer efficacement des éléments DOM par nom de classe à l'aide de PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-05 13:48:15548parcourir

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

Récupération d'éléments DOM par nom de classe

Lors de la navigation dans des documents HTML à l'aide de PHP DOM, l'accès aux éléments en fonction de leurs noms de classe peut être crucial. Cette question aborde l'approche la plus efficace pour obtenir des sous-éléments dans un nœud DOM qui possèdent un attribut de classe spécifié.

Approche du sélecteur XPath :

Un sélecteur Xpath peut efficacement localiser les éléments correspondant à un nom de classe donné. Par exemple, pour récupérer des éléments avec une classe « ma classe », utilisez le Xpath suivant :

$finder = new DomXPath($dom);
$classname = "my-class";
$nodes = $finder->query("//*[contains(@class, '$classname')]");

Approche de sélection CSS :

Si vous avez l'intention de effectuez une sélection étendue d'éléments DOM avec des sélecteurs complexes, pensez à utiliser Zend_Dom_Query. Il prend en charge la syntaxe du sélecteur CSS, ce qui le rend similaire à la bibliothèque jQuery.

$finder = new Zend_Dom_Query($html);
$classname = 'my-class';
$nodes = $finder->query("*[class~=\"$classname\"]");

Mise à jour : équivalent XPath du sélecteur CSS *[@class~='my-class']

Pour ceux qui sont curieux de connaître le fonctionnement interne de Zend_Dom_Query, le sélecteur CSS ci-dessus compile comme suit Xpath :

[contains(concat(' ', normalize-space(@class), ' '), ' my-class ')]

Cette expression Xpath garantit que l'attribut de classe contient le nom de classe spécifié, même s'il est entouré d'espaces.

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