В PHP я использую DOMDocument, и мне нужно искать элемент с атрибутом class = "something"
Я новичок в DOMDocument (использую REGEX всю свою жизнь, поэтому помогите мне: P)
Итак, мой вопрос: я нашел DOMElement, используя getElementById, теперь я хочу заглянуть внутрь дочерних элементов этого элемента и получить узел с определенным классом, class = "something"
Как мне это сделать?
После того, как у вас есть DOMNode
$n
для документа $d
чьи дети вы хотите фильтровать по классу, который вы можете сделать (это ищет рекурсивно):
$xp = new DOMXpath($d); foreach ($xp->query('//*[contains(@class, \'classname\')]', $n) as $found) { //do sth with $found }
Точка contains
– улавливать те узлы, у которых атрибут класса имеет более одного значения, но он слишком груб. См. Здесь, чтобы получить лучшее решение.
Используйте запрос XPath :
$xpath = new DOMXPath($document); // keep the quotes around the classname $elementsThatHaveMyClass = $xpath->query('//*[@class="class here"]');
Выражение означает «откуда угодно в документе, найдите любой тег, атрибут class
которого равен class here
». Здесь вы можете прочитать больше о синтаксисе XPath.