Maison >développement back-end >tutoriel php >Comment sélectionner une classe CSS à l'aide de XPath ?

Comment sélectionner une classe CSS à l'aide de XPath ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-08 18:30:15368parcourir

How to Select a CSS Class Using XPath?

Comment sélectionner une classe CSS avec XPath

Problème :

Vous souhaitez sélectionner une classe spécifique appelée ".date" dans un document HTML utilisant XPath, mais vos tentatives ont été échec.

Code :

@$doc = new DOMDocument();
@$doc->loadHTML($html);
$xml = simplexml_import_dom($doc); //Simplify XPath
$images = $xml->xpath('//[@class="date"]'); 

Solution :

Contrairement à CSS, XPath ne prend pas en charge nativement les sélecteurs de classe. Cependant, il existe une solution de contournement :

Corriger la syntaxe XPath :

//*[contains(concat(" ", normalize-space(@class), " "), " foo ")]

Cette expression correspond à tout élément dont l'attribut de classe contient la sous-chaîne "foo".

Explication :

  • normalize-space : supprime le début et des espaces de fin.
  • concat : combine " ", la valeur @class normalisée et " " pour garantir que le nom de la classe est entouré d'espaces.
  • contient : vérifie si la chaîne concaténée inclut " foo ".

Exemple :

<div>

La requête XPath sélectionnera correctement l'élément avec la classe "date" et ignorera l'élément "foobar".

Incorrect Approches :

  • //*[@class="foo"] : ne fait pas correspondre les éléments avec plusieurs classes.
  • //*[contient (@class, "foo")] : fait correspondre les éléments avec une classe contenant "foo" comme sous-chaîne, même s'il fait partie d'un nom de classe plus long comme "foobar".

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