array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'domxpath.evaluate.php', 1 => 'DOMXPath::evaluate', ), 'up' => array ( 0 => 'class.domxpath.php', 1 => 'DOMXPath', ), 'prev' => array ( 0 => 'domxpath.construct.php', 1 => 'DOMXPath::__construct', ), 'next' => array ( 0 => 'domxpath.query.php', 1 => 'DOMXPath::query', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/dom/domxpath/evaluate.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
DOMXPath::evaluate — Вычисляет переданное выражение XPath и возвращает типизированный результат, если возможно
$expression
, ?DOMNode $contextNode
= null
, bool $registerNodeNS
= true
): mixed
Выполняет переданное выражение XPath expression
и
возвращает типизированный результат, если это возможно.
expression
Выражение XPath для выполнения.
contextNode
Дополнительный параметр contextNode
может быть
указан для выполнения относительных запросов XPath. По
умолчанию запросы выполняются относительно корневого элемента.
registerNodeNS
Нужно ли автоматически регистрировать префиксы пространства имён в области видимости контекстного узла для объекта DOMXPath. Параметр помогает избегать ручного вызова метода DOMXPath::registerNamespace() для каждого пространства имён в области видимости. Когда префиксы пространства имён конфликтуют, регистрируется только префикс пространства имён близлежащего потомка.
Возвращает типизированный результат, если это возможно, либо объект
DOMNodeList, содержащий все узлы, соответствующие
заданному XPath-выражению expression
.
Если expression
построено
неправильно или contextNode
имеет неверное значение,
DOMXPath::evaluate() вернёт false
.
Пример #1 Получение количества всех английских книг
<?php
$doc = new DOMDocument;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
$tbody = $doc->getElementsByTagName('tbody')->item(0);
// запрос относительно узла tbody
$query = 'count(row/entry[. = "en"])';
$entries = $xpath->evaluate($query, $tbody);
echo "Есть $entries английские книги\n";
?>
Результат выполнения приведённого примера:
Есть 2 английские книги