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

Wie kann ich mit PHP DOM-Elemente effizient nach Klassennamen auswählen?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 20:27:11254Durchsuche

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

DOM-Elemente nach Klassennamen mithilfe von PHP DOM abrufen

Bei der Arbeit mit PHP DOM ist es entscheidend, bestimmte Elemente innerhalb eines Knotens basierend auf ihrer Klasse abzurufen. Lassen Sie uns die besten Ansätze erkunden, um dies zu erreichen:

XPath Selector

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

Dieser Ansatz verwendet XPath, um alle Elemente mit auszuwählen das angegebene Klassenattribut.

Zend_Dom_Query CSS Selector

Wenn Sie die CSS-Selektorsyntax bevorzugen, Zend_Dom_Query bietet eine praktische Lösung:

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

Update: XPath-Version von *[@class~=' my-class'] CSS-Selektor

Das Parsen des CSS-Selektors mit Zend_Dom_Query zeigt einen äquivalenten XPath Ausdruck:

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

Durch die direkte Verwendung dieses XPath können Sie nach Elementen abfragen, die die angegebene Klasse enthalten, ohne sie zu verwenden Zend_Dom_Query.

Bei der Auswahl von Elementen nach Klasse ist zu beachten, dass Sie, wenn der Elementtyp bekannt ist, das * durch den entsprechenden Tag-Namen ersetzen können, um die Suche einzugrenzen und die Effizienz zu verbessern.

Das obige ist der detaillierte Inhalt vonWie kann ich mit PHP DOM-Elemente effizient nach Klassennamen auswählen?. 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