The DOMXPath::evaluate() function is an inbuilt function in PHP which is used to execute the given XPath expression which is a pattern defined to select a set of nodes.
Syntax:
mixed DOMXPath::evaluate( string $expression,
DOMNode $contextnode, bool $registerNodeNS )
Parameters: This function accept three parameters as mentioned above and described below:
- $expression: It specifies the XPath expression to execute.
- $contextnode (Optional): It specifies the contextnode for doing relative XPath queries. By default, the queries are relative to the root element.
- $registerNodeNS (Optional): It specifies whether to disable automatic registration of the context node.
Return Value: This function returns TRUE on success.
Exceptions: This function throws DOMXPathException on error.
Below examples illustrate the DOMXPath::evaluate() function in PHP:
Example 1:
php
<?php // Create a new DOMDocument instance$document = new DOMDocument(); // Create a XML$xml = <<<XML<?xml version="1.0" encoding="utf-8"?><bookstore><book> <title lang="en">neveropen</title> <price>400</price></book><book> <title lang="en">Intro to XML</title> <price>300</price></book></bookstore>XML; // Load the XML$document->loadXML($xml); // Create a new DOMXPath instance$xpath = new DOMXPath($document); // Get the$tbody = $document-> getElementsByTagName('bookstore')->item(0); // Query to get the number of titles with lang // attribute "en"$query = 'count(//title[@lang=\'en\'])'; // Evaluate the query$entries = $xpath->evaluate($query, $tbody);echo "Number of elements with lang = \"en\": $entries\n";?> |
Output:
Number of elements with lang = "en": 2
Example 2:
php
<?php// Create a new DOMDocument instance$document = new DOMDocument();// Create a XML$xml = <<<XML<?xml version="1.0" encoding="utf-8"?><neveropen> Keep Learning.</neveropen>XML;// Load the XML$document->loadXML($xml);// Create a new DOMXPath instance$xpath = new DOMXPath($document);// Get the$tbody = $document->getElementsByTagName('neveropen')->item(0);// Get the element with name neveropen$query = '//neveropen';// Evaluate the query$entries = $xpath->evaluate($query, $tbody);echo $entries[0]->nodeValue;?> |
Output:
Keep Learning.
Reference: https://www.php.net/manual/en/domxpath.evaluate.php
