Documentación offline PHP master

DOMXPath::registerPhpFunctions

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

DOMXPath::registerPhpFunctions

Registra una función PHP como función XPath

Descripción#

public DOMXPath::registerPhpFunctions([string $restrict]): void
```php

Este método activa la posibilidad de utilizar funciones PHP en expresiones XPath.

## Parámetros

`restrict`  
Utilice este parámetro únicamente para autorizar ciertas funciones a ser llamadas desde XPath.

Este parámetro puede ser uno de los siguientes elementos: un `string` (nombre de función), un `array` indexado conteniendo nombres de funciones, o un `array` asociativo con claves correspondientes a nombres de funciones y valores asociados correspondientes a `callable`.

## Valores devueltos

No se retorna ningún valor.

## Errores/Excepciones

- Lanza una ValueError si el nombre de un callback no es válido.

- Levanta una excepción ValueError si `options` contiene una opción inválida.

- Levanta una excepción ValueError si `overrideEncoding` utiliza un codificado desconocido.

- Lanza una TypeError si un callback dado no es llamable.

## Historial de cambios

| Versión | Descripción |
|----|----|
| 8.4.0 | Los nombres de callback inválidos ahora lanzan una ValueError. Pasar una entrada no llamable ahora lanza una TypeError. |
| 8.4.0 | Ahora es posible utilizar `callable`s para callbacks al utilizar `restrict` con entradas de tipo `array`. |

## Ejemplos

Los siguientes ejemplos utilizan el fichero `book.xml` que contiene los siguientes datos:

book.xml

PHP Basics Jim Smith Jane Smith PHP Secrets Jenny Smythe XML basics Joe Black

DOMXPath::registerPhpFunctions con `php:function`
load('examples/book-simple.xml'); $xpath = new DOMXPath($doc); // Registra el espacio de nombres php (necesario) $xpath->registerNamespace("php", "http://php.net/xpath"); // Registra las funciones PHP (Sin restricciones) $xpath->registerPhpFunctions(); // Llama a la función substr en el título del libro $nodes = $xpath->query('//book[php:functionString("substr", title, 0, 3) = "PHP"]'); echo "{$nodes->length} libros encontrados cuyo título comienza con 'PHP':\n"; foreach ($nodes as $node) { $title = $node->getElementsByTagName("title")->item(0)->nodeValue; $author = $node->getElementsByTagName("author")->item(0)->nodeValue; echo "$title por $author\n"; } ?>
Resultado del ejemplo anterior es similar a:

    2 libros encontrados cuyo título comienza con 'PHP':
    PHP Basics por Jim Smith
    PHP Secrets por Jenny Smythe

Ejemplo con DOMXPath::registerPhpFunctions y `php:function`
load('examples/book-simple.xml'); $xpath = new DOMXPath($doc); // Registra el espacio de nombres php (necesario) $xpath->registerNamespace("php", "http://php.net/xpath"); // Registra funciones PHP (solo has_multiple) $xpath->registerPhpFunctions("has_multiple"); function has_multiple($nodes) { // Retorna true si hay más de un autor return count($nodes) > 1; } // Filtra los libros cuyos autores son múltiples $books = $xpath->query('//book[php:function("has_multiple", author)]'); echo "Libros con múltiples autores :\n"; foreach ($books as $book) { echo $book->getElementsByTagName("title")->item(0)->nodeValue . "\n"; } ?>
Resultado del ejemplo anterior es similar a:

    Libros con múltiples autores :
    PHP Basics

DOMXPath::registerPhpFunctions con un `callable`
load('examples/book-simple.xml'); $xpath = new DOMXPath($doc); // Registrar el namespace php: (necesario) $xpath->registerNamespace("php", "http://php.net/xpath"); // Registrar las funciones PHP (solo has_multiple) $xpath->registerPhpFunctions(["has_multiple" => fn ($nodes) => count($nodes) > 1]); // Filtrar los libros con múltiples autores $books = $xpath->query('//book[php:function("has_multiple", author)]'); echo "Libros con múltiples autores :\n"; foreach ($books as $book) { echo $book->getElementsByTagName("title")->item(0)->nodeValue . "\n"; } ?>

```php

Resultado del ejemplo anterior es similar a:

Libros con múltiples autores :
PHP Basics

Véase también#

DOMXPath::registerNamespace, DOMXPath::query, DOMXPath::evaluate, XSLTProcessor::registerPHPFunctions