DOMXPath::registerPhpFunctionNS

(PHP >= 8.4.0)

DOMXPath::registerPhpFunctionNSEnregistre 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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top