Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich mit PHP effizient DOM-Elemente nach Klassennamen abrufen?

Wie kann ich mit PHP effizient DOM-Elemente nach Klassennamen abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-05 13:48:15548Durchsuche

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

DOM-Elemente nach Klassennamen abrufen

Beim Navigieren in HTML-Dokumenten mit PHP DOM kann der Zugriff auf Elemente basierend auf ihren Klassennamen von entscheidender Bedeutung sein. Diese Frage befasst sich mit dem effektivsten Ansatz zum Abrufen von Unterelementen innerhalb eines DOM-Knotens, die ein bestimmtes Klassenattribut besitzen.

Xpath-Selektor-Ansatz:

Ein Xpath-Selektor kann dies effizient tun Suchen Sie nach Elementen, die einem bestimmten Klassennamen entsprechen. Um beispielsweise Elemente mit der Klasse „my-class“ abzurufen, verwenden Sie den folgenden XPath:

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

CSS-Selektoransatz:

Wenn Sie dies beabsichtigen Um eine umfassende Auswahl von DOM-Elementen mit komplexen Selektoren durchzuführen, sollten Sie die Verwendung von Zend_Dom_Query in Betracht ziehen. Es unterstützt die CSS-Selektorsyntax und ähnelt damit der jQuery-Bibliothek.

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

Update: Xpath-Äquivalent von *[@class~='my-class'] CSS-Selektor

Für diejenigen, die neugierig auf das Innenleben von Zend_Dom_Query sind: Der obige CSS-Selektor lässt sich wie folgt kompilieren Xpath:

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

Dieser Xpath-Ausdruck stellt sicher, dass das Klassenattribut den angegebenen Klassennamen enthält, auch wenn es von Leerzeichen umgeben ist.

Das obige ist der detaillierte Inhalt vonWie kann ich mit PHP effizient DOM-Elemente nach Klassennamen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn