DOMDocument нужно искать элемент с атрибутом class = "кое-что" - PullRequest
1 голос
/ 10 августа 2010

В PHP я использую DOMDocument, и мне нужно искать элемент с атрибутом class = "кое-что"

Я новичок в DOMDocument (использую REGEX всю свою жизнь, поэтому помогите мне: P)

Хорошо, мой вопрос: я нашел DOMElement с помощью getElementById, теперь я хочу заглянуть внутрь дочерних элементов этого элемента и получить узел, который имеет определенный класс, class = "кое-что"

Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Если у вас есть DOMNode $n для документа $d, чьи дочерние элементы вы хотите отфильтровать по классу, который вы можете выполнить (выполняется рекурсивный поиск):

$xp = new DOMXpath($d);
foreach ($xp->query('//*[contains(@class, \'classname\')]', $n) as $found) {
    //do sth with $found
}

Точка contains должен перехватывать те узлы, у которых атрибут класса имеет более одного значения, но он слишком грубый.См. здесь для лучшего решения.

3 голосов
/ 10 августа 2010

Используйте запрос XPath :

$xpath = new DOMXPath($document);
// keep the quotes around the classname
$elementsThatHaveMyClass = $xpath->query('//*[@class="class here"]');

Выражение означает «в любом месте документа найдите любой тег, атрибут class которого равен class here».Подробнее о синтаксисе XPath можно прочитать здесь .

...