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
Libérer: 2024-12-08 18:30:15
original
449 Les gens l'ont consulté

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"]'); 
Copier après la connexion

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 ")]
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal