DOMXPath::registerPhpFunctions
(PHP 5 >= 5.3.0)
DOMXPath::registerPhpFunctions — Registra funciones de PHP como funciones XPath
Descripción
Este método habilita la capacidad de usar funciones de PHP dentro de expresiones XPath.
Parámetros
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
There are no user contributed notes for this page.
