PHP 8.4.1 Released!

DOMXPath::registerPhpFunctions

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

DOMXPath::registerPhpFunctionsRegistra funções PHP como funções XPath

Descrição

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

Este método permite o uso de funções PHP dentro de expressões XPath.

Parâmetros

restrict

Use este parâmetro para permitir apenas que certas funções sejam chamadas do XPath.

Este parâmetro pode ser uma string (um nome de função) ou um array de nomes de função.

Valor Retornado

Nenhum valor é retornado.

Exemplos

Os exemplos a seguir usam book.xml que contém o seguinte:

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

Exemplo #2 DOMXPath::registerPHPFunctions() com php:functionString

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

$xpath = new DOMXPath($doc);

// Registra o namespace php: (obrigatório)
$xpath->registerNamespace("php", "http://php.net/xpath");

// Registra funções PHP (sem restrições)
$xpath->registerPHPFunctions();

// hama a função substr no título do livro
$nodes = $xpath->query('//book[php:functionString("substr", title, 0, 3) = "PHP"]');

echo
"Found {$nodes->length} books starting with 'PHP':\n";
foreach (
$nodes as $node) {
$title = $node->getElementsByTagName("title")->item(0)->nodeValue;
$author = $node->getElementsByTagName("author")->item(0)->nodeValue;
echo
"$title by $author\n";
}

?>

O exemplo acima produzirá algo semelhante a:

Found 2 books starting with 'PHP':
PHP Basics by Jim Smith
PHP Secrets by Jenny Smythe

Exemplo #3 DOMXPath::registerPHPFunctions() com php:function

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

$xpath = new DOMXPath($doc);

// Registra o namespace php: (obrigatório)
$xpath->registerNamespace("php", "http://php.net/xpath");

// Registra funções PHP (apenas has_multiple)
$xpath->registerPHPFunctions("has_multiple");

function
has_multiple($nodes) {
// Retorna true se mais de um autor
return count($nodes) > 1;
}
// Filtra livros com múltiplos autores
$books = $xpath->query('//book[php:function("has_multiple", author)]');

echo
"Books with multiple authors:\n";
foreach (
$books as $book) {
echo
$book->getElementsByTagName("title")->item(0)->nodeValue . "\n";
}

?>

O exemplo acima produzirá algo semelhante a:

Books with multiple authors:
PHP Basics

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top