The DOMXPath::registerPhpFunctions() function is an inbuilt function in PHP which is used to enable the ability to use PHP functions within XPath expressions.
Syntax:
void DOMXPath::registerPhpFunctions( mixed $restrict )
Parameters: This function accepts an optional single parameter $restrict which holds the function to restrict.
Return Value: This function does not return any value.
Below given programs illustrate the DOMXPath::registerPhpFunctions() function in PHP:
Program 1:
<?php // Create a new DOMDocument instance $document = new DOMDocument(); // Create a XML $xml = <<<XML <?xml version= "1.0" encoding= "UTF-8" ?> <books> <book> <title>FOO BAR</title> <author>Mr. A</author> <author>Mr. B</author> </book> <book> <title>FOO BAZ</title> <author>Mr. C</author> </book> </books> XML; // Load the XML $document ->loadXML( $xml ); // Create a new DOMXPath instance $xpath = new DOMXPath( $document ); // Register the php: namespace $xpath ->registerNamespace( "php" , // Register PHP functions $xpath ->registerPHPFunctions(); // Use the PHP function to find // the books starting with FOO $query = '//book[php:functionString(' . '"substr", title, 0, 3) = "FOO"]' ; // Execute the query $entries = $xpath ->evaluate( $query ); echo "Found $entries->length books" . " starting with 'FOO':\n" ; foreach ( $entries as $node ) { $title = $node ->getElementsByTagName( "title" )->item(0)->nodeValue; echo "<br>$title" ; } ?> |
Output:
Found 2 books starting with 'FOO': FOO BAR FOO BAZ
Program 2:
<?php // Create a new DOMDocument instance $document = new DOMDocument(); // Create a XML $xml = <<<XML <?xml version= "1.0" encoding= "UTF-8" ?> <books> <book> <title>FOO BAR</title> <author>Mr. A</author> <author>Mr. B</author> </book> <book> <title>FOO BAZ</title> <author>Mr. C</author> </book> </books> XML; // Load the XML $document ->loadXML( $xml ); // Create a new DOMXPath instance $xpath = new DOMXPath( $document ); // Register the php: namespace $xpath ->registerNamespace( "php" , // Register PHP functions $xpath ->registerPHPFunctions(); // Use the manually created // PHP function in query $query = '//book[php:function(' . '"has_multiple", author)]' ; // Execute the query $entries = $xpath ->evaluate( $query ); echo "Found $entries->length books " . "with multiple authors:\n" ; foreach ( $entries as $node ) { $title = $node ->getElementsByTagName( "title" )->item(0)->nodeValue; echo "<br>$title" ; } function has_multiple( $nodes ) { // Return true if more than // one author is there return count ( $nodes ) > 1; } ?> |
Output:
Found 1 books with multiple authors: FOO BAR
Reference: https://www.php.net/manual/en/domxpath.registerphpfunctions.php