# DOMXPath::registerPhpFunctionNS

(PHP >= 8.4.0)

DOMXPath::registerPhpFunctionNS — Enregistre une fonction PHP en tant que fonction XPath dans un espace de noms

### Description

public DOMXPath::registerPhpFunctionNS(string `$namespaceURI`, string `$name`, callable `$callable`): void

Cette méthode permet d'utiliser une fonction PHP en tant que fonction XPath dans les expressions XPath.

### Liste de paramètres

`namespaceURI`
  L'URI de l'espace de noms.
`name`
  La fonction locale à l'intérieur de l'espace de noms.
`callable`
  La fonction PHP à appeler lorsque la fonction XPath est appelée dans l'expression XPath. Lorsqu'une liste de nœuds est passée en paramètre à la fonction de rappel, l'argument devient un tableau contenant les nœuds DOM correspondants.

### Erreurs / Exceptions

- Lance une ValueError si le nom d'un callback n'est pas valide.
- Lève une exception ValueError si `options` contient une option invalide.
- Lève une exception ValueError si `overrideEncoding` utilise un encodage inconnu.
- Lance une TypeError si un callback donné n'est pas appelable.

### Valeurs de retour

Aucune valeur n'est retournée.

### Exemples

Exemple #1 Enregistre une fonction XPath dans un espace de noms et l'appelle depuis l'expression XPath

`<?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);
// Enregistre l'espace de noms my: (obligatoire)
$xpath->registerNamespace("my", "urn:my.ns");
// Enregistre les fonctions PHP
$xpath->registerPhpFunctionNS(
'urn:my.ns',
'substring',
fn (array $arg1, int $start, int $length) => substr($arg1[0]->textContent, $start, $length)
);
// Appel de la fonction substr sur le titre du livre
$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";
}
?>`

Résultat de l'exemple ci-dessus est similaire à :

    Found 2 books starting with 'PHP':
    PHP Basics by Jim Smith
    PHP Secrets by Jenny Smythe

### Voir aussi

- DOMXPath::registerNamespace() - Enregistre l'espace de noms avec l'objet DOMXPath
- DOMXPath::query() - Évalue l'expression XPath donnée
- DOMXPath::evaluate() - Évalue une expression XPath donnée et retourne un résultat typé si possible
- XSLTProcessor::registerPHPFunctions() - Active l'utilisation de PHP dans les feuilles de styles XSLT
- XSLTProcessor::registerPHPFunctionNS() - Enregistre une fonction PHP en tant que fonction XSLT dans un espace de noms