DOMXPath::registerPhpFunctions

(PHP 5 >= 5.3.0)

DOMXPath::registerPhpFunctionsEnregistre une fonction PHP comme fonction XPath

Description

public void DOMXPath::registerPhpFunctions ([ mixed $restrict ] )

Cette méthode active la possibilité d'utiliser des fonctions PHP dans des expressions XPath.

Liste de paramètres

restrict

Utilisez ce paramètre uniquement pour autoriser certaines fonctions à être appelées depuis XPath.

Ce paramètre peut être soit une chaîne de caractères (un nom de fonction) ou un tableau de noms de fonctions.

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Les exemples suivants utilisent le fichier book.xml qui contient les données suivantes :

Exemple #1 book.xml

<?php
$doc = new DOMDocument;
$doc->load('book.xml');

$xpath = new DOMXPath($doc);

// Enregistre l'espace de noms php (nécessaire)
$xpath->registerNamespace("php", "http://php.net/xpath");

// Enregistre les fonctions PHP (Aucune restriction)
$xpath->registerPHPFunctions();

// Appèle la fonction substr sur le titre du livre
$nodes = $xpath->query('//book[php:functionString("substr", title, 0, 3) = "PHP"]');

echo "{$nodes->length} livres trouvés dont le titre commence par 'PHP':\n";
foreach ($nodes as $node) {
	$title  = $node->getElementsByTagName("title")->item(0)->nodeValue;
	$author = $node->getElementsByTagName("author")->item(0)->nodeValue;
	echo "$title par $author\n";
}

?>
<?php
$doc = new DOMDocument;
$doc->load('book.xml');

$xpath = new DOMXPath($doc);

// Enregistre l'espace de noms php (nécessaire)
$xpath->registerNamespace("php", "http://php.net/xpath");

// Enregistre des fonctions PHP (has_multiple uniquement)
$xpath->registerPHPFunctions("has_multiple");
 
function has_multiple($nodes) {
	// Retourne true s'il y a plus d'un auteur
	return count($nodes) > 1;
}
// Filtre les livres dont les auteurs sont multiples
$books = $xpath->query('//book[php:function("has_multiple", author)]');

echo "Livres avec plusieurs auteurs :\n";
foreach ($books as $book) {
	echo $book->getElementsByTagName("title")->item(0)->nodeValue . "\n";
}

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Livres avec plusieurs auteurs :
PHP Basics

Voir aussi

LoadingChargement en cours