(PHP >= 8.4.0)
DOMXPath::registerPhpFunctionNS — Register a PHP functions as namespaced XPath function
$namespaceURI, string $name, callable $callable): voidThis method enables the ability to use a PHP function as a namespaced XPath function inside XPath expressions.
namespaceURIThe URI of the namespace.
nameThe local function name inside the namespace.
callableThe PHP function to call when the XPath function gets called within the XPath expression. When a node list is passed as parameter to the callback, they are arrays containing the matched DOM nodes.
Geri çağırım işlevinin adı geçersiz ise ValueError istisnası oluşur.
Throws a ValueError if
options contains an invalid option.
Throws a ValueError if
overrideEncoding is an unknown encoding.
Belirtilen .
Hiçbir değer dönmez.
Örnek 1 Register a namespaced XPath function and call it from the XPath expression
<?php
$xml = <<<EOB
<books>
<book>
<title>PHP Basics</title>
<author>Jim Smith</author>
<author>Jane Smith</author>
</book>
<book>
<title>PHP Secrets</title>
<author>Jenny Smythe</author>
</book>
<book>
<title>XML basics</title>
<author>Joe Black</author>
</book>
</books>
EOB;
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
// Register the my: namespace (required)
$xpath->registerNamespace("my", "urn:my.ns");
// Register PHP function
$xpath->registerPHPFunctionNS(
'urn:my.ns',
'substring',
fn (array $arg1, int $start, int $length) => substr($arg1[0]->textContent, $start, $length)
);
// Call substr function on the book title
$nodes = $xpath->query('//book[my:substring(title, 0, 3) = "PHP"]');
echo "Found {$nodes->length} books starting with 'PHP':\n";
foreach ($nodes as $node) {
$title = $node->getElementsByTagName("title")->item(0)->nodeValue;
$author = $node->getElementsByTagName("author")->item(0)->nodeValue;
echo "$title by $author\n";
}
?>Yukarıdaki örnek şuna benzer bir çıktı üretir:
Found 2 books starting with 'PHP': PHP Basics by Jim Smith PHP Secrets by Jenny Smythe