# DOMXPath::registerPhpFunctions

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DOMXPath::registerPhpFunctions — Registra funciones de PHP como funciones XPath

### Descripción

public DOMXPath::registerPhpFunctions(string|array|null `$restrict` = `null`): void

Este método habilita la capacidad de usar funciones de PHP dentro de expresiones XPath.

### Parámetros

`restrict`

  Use este parámetro para permitir solamente que ciertas funciones sean llamadas desde XPath.

  Este parámetro puede ser un string (un nombre de función) o un array de nombres de funciones.

### Valores devueltos

No devuelve ningún valor.

### Ejemplos

Los siguientes ejemplos usan book.xml que contiene lo siguiente:

Ejemplo #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>

Ejemplo #2 DOMXPath::registerPHPFunctions() con `php:functionString`

`<?php
$doc = new DOMDocument;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
// Registrar el espacio de nombres php: namespace (requerido)
$xpath->registerNamespace("php", "http://php.net/xpath");
// Registrar funciones de PHP (sin restricciones)
$xpath->registerPHPFunctions();
// Llamar a la función substr en el título del libro
$nodos = $xpath->query('//book[php:functionString("substr", title, 0, 3) = "PHP"]');
echo "Se encontró {$nodos->length} libros que empiezan con 'PHP':\n";
foreach ($nodos as $nodo) {
$title = $nodo->getElementsByTagName("title")->item(0)->nodeValue;
$author = $nodo->getElementsByTagName("author")->item(0)->nodeValue;
echo "$title por $author\n";
}
?>`

El resultado del ejemplo sería algo similar a:

    Se encontró 2 libros que empiezan con 'PHP':
    PHP Basics por Jim Smith
    PHP Secrets por Jenny Smythe

Ejemplo #3 DOMXPath::registerPHPFunctions() con `php:function`

`<?php
$doc = new DOMDocument;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
// Registrar el espacio de nombres php: namespace (requerido)
$xpath->registerNamespace("php", "http://php.net/xpath");
// Registrar funciones de PHP (sólo has_multiple)
$xpath->registerPHPFunctions("has_multiple");
function has_multiple($nodos) {
// Return true if more than one author
return count($nodos) > 1;
}
// Filtrar libros con múltiples autores
$libros = $xpath->query('//book[php:function("has_multiple", author)]');
echo "Libros con múltiples autores:\n";
foreach ($libros as $libro) {
echo $libro->getElementsByTagName("title")->item(0)->nodeValue . "\n";
}
?>`

El resultado del ejemplo sería algo similar a:

    Libros con múltiples autores:
    PHP Basics

### Ver también

- DOMXPath::registerNamespace() - Registra el espacio de nombres con el objeto DOMXPath
- DOMXPath::query() - Evalúa la expresión XPath dada
- DOMXPath::evaluate() - Evalúa la expresión XPath dada y devuelve un resultado escrito si es posible