(PHP 5 >= 5.1.0, PHP 7, PHP 8)
DOMXPath::evaluate — Evaluates the given XPath expression and returns a typed result if possible
$expression, ?DOMNode $contextNode = null, bool $registerNodeNS = true): mixed
Executes the given XPath expression and returns
a typed result if possible.
expressionThe 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.
registerNodeNSWhether to automatically register the in-scope namespace prefixes of the context node to the DOMXPath object. This can be used to avoid needing to call DOMXPath::registerNamespace() manually for each in-scope namespaces. When a namespace prefix conflict exists, only the nearest descendant namespace prefix is registered.
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.
Example #1 Getting the count of all the english books
<?php
$doc = new DOMDocument;
$doc->load('book.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";
?>The above example will output:
There are 2 english books