DOMXPath::evaluate

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

DOMXPath::evaluate Evaluates the given XPath expression and returns a typed result if possible

Опис

public DOMXPath::evaluate(string $expression, ?DOMNode $contextNode = null, bool $registerNodeNS = true): mixed

Executes the given XPath expression and returns a typed result if possible.

Параметри

expression

The XPath expression to execute.

contextNode

The optional contextNode can be specified for doing relative XPath queries. By default, the queries are relative to the root element.

registerNodeNS

Визначає, чи необхідно автоматично реєструвати префікси простору імен в області видимості контекстного вузла для об'єкта DOMXPath. Потрібно для того, щоб не викликати метод DOMXPath::registerNamespace() для кожного простору імен в області видимості. Коли префікси збігаються, реєструється тільки префікс простору імен найближчого нащадка.

Помилки/виключення

The following errors are possible when using an expression that invokes PHP callbacks.

  • Throws an Error if a PHP callback is invoked but there were no callbacks registered, or if the named callback was not registered.
  • Throws a TypeError if the php:function syntax is used and the handler name is not a string.
  • Throws an Error if a non-DOM object was returned from a callback.

Значення, що повертаються

Returns a typed result if possible or a DOMNodeList containing all nodes matching the given XPath expression.

If the expression is malformed or the contextNode is invalid, DOMXPath::evaluate() returns false.

Приклади

Приклад #1 Getting the count of all the english books

<?php

$doc
= new DOMDocument;

$doc->load('examples/book-dcobook.xml');

$xpath = new DOMXPath($doc);

$tbody = $doc->getElementsByTagName('tbody')->item(0);

// our query is relative to the tbody node
$query = 'count(row/entry[. = "en"])';

$entries = $xpath->evaluate($query, $tbody);
echo
"There are $entries english books\n";

?>

Поданий вище приклад виведе:

There are 2 english books

Прогляньте також