XPath

Материал из Chesser Wiki
(перенаправлено с «Xpath»)
Перейти к: навигация, поиск

Ресурсы

Примеры XPath

XPath-правило

пример xpath-правила: //div[descendant::*[contains(text(), 'substringaaaa')]] оно выберет ВСЕ div-ы, внутри которых есть слово substringaaaa:

Подробнее разберем каждый элемент адресации:

  • // - это значит путь начинается с wildcard-символа, по аналогии с *filename, т.е. любой путь-префикс
  • //div - ищем везде div'ы
  • //div[*] - явно выбираем ВСЕ div'ы (хотя будет работать и без[*])
  • //div[descendant::*] - выбираем ВСЕ div'ы вместе со всеми вложенными тегами(потомками)
  • //div[descendant::*[contains(text(), 'substringaaaa')]] - тут сужаем поиск: ВСЕ div'ы, но внутри которых в тексте(в содержимом тегов, в том числе внутри тегов-потомках) содержится слово substringaaaa

Пример использования XPath на PHP

<?php

    $text = file_get_contents('http://chesser.ru/blog/');

    $doc = new DOMDocument();
    $doc->loadHTML($text);

    // для обработки html текста в формате UTF-8 можно использовать такой хак:
    // $doc->loadHTML('<?xml encoding="UTF-8">' . $text);
    $xpath = new DOMXpath($doc);

    $nodes = $xpath->query("//div[descendant::*[contains(text(), 'substringaaaa')]]");

    if($nodes->length > 0) {
        foreach($nodes as $item)
            var_dump($item->nodeValue);
    }
    else {
        echo 'empty';
    }
?>