Rechercher une fonction PHP

DOMXPath::registerPhpFunctions

(PHP 5 >= 5.3.0, PHP 7)

DOMXPath::registerPhpFunctionsEnregistre une fonction PHP comme fonction XPath

Description

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

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

Retour à la première page de Manuel PHP  Table des matières Haut

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Aucune valeur n'est retournée.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

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

Exemple #1 book.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>

Exemple #2 Exemple avec DOMXPath::registerPHPFunctions() et php:functionString

<?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";
}

?>

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

2 livres trouvés dont le titre commence par 'PHP':
PHP Basics par Jim Smith
PHP Secrets par Jenny Smythe

Exemple #3 Exemple avec DOMXPath::registerPHPFunctions() et php:function

<?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

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-domxpath.registerphpfunctions.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut