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